1 #include 2 #include 34#define list_init_size 100
5#define listincrement 10
6#define overflow -2
7#define ok 1
8#define error 0
9 typedef int
elemtype;
10 typedef struct
sqlist;
1516
int initlist_sq(sqlist *l);
17int listinsert_sq(sqlist *l,int
i,elemtype e);
18void listinput_sq(sqlist *l);
19void listoutput_sq(sqlist *l);
20int listlength_sq(sqlist *l);
21int listdelete_sq(sqlist *l,int i,elemtype *e);
22int locateelem_sq(sqlist *l,elemtype e,int (*compare)(elemtype,elemtype));
23int
compare(elemtype a,elemtype b);
24void mergelist_sq(sqlist *la,sqlist *lb,sqlist *lc);
25void getelem(sqlist *l,elemtype i,elemtype *e);
26int emptylist(sqlist *l);
27void listinverse(sqlist *l);
2829
intmain()
30 else
7374
//輸出順序表某一位置的元素
75 getelem(&sq2,4,&e);
76 printf("
第i個元素為:%d\n
",e);
7778
//將順序表逆置
79 listinverse(&sq2);
80 listoutput_sq(&sq2);
81return0;
82}83//
初始化線性表
84int initlist_sq(sqlist *l)
91//
向線性表中輸入元素
92void listinput_sq(sqlist *l)
102103
return
;104 }//
從線性表輸出元素
105void listoutput_sq(sqlist *l) else
114}
115 printf("\n"
);116
return
;117
}118
//返回線性表中元素的個數
119int listlength_sq(sqlist *l)
122//
向線性表中插入元素
123int listinsert_sq(sqlist *l,int
i,elemtype e)
134/*
q = &(l->elem[i-1]);
135for(p=&(l->elem[l->length-1]);p>=q;--p)
138*q = e;
*/139
for(m=l->length-1; m>=i-1; --m)
142 l->elem[i-1] =e;
143 ++l->length;
144return
ok;145
}146
//刪除線性表中的元素
147int listdelete_sq(sqlist *l,int i,elemtype *e)
155156
/*p = &(l->elem[i-1]);
157*e = *p;
158q = l->elem+l->length-1;
159for(++p; p<=q; ++p)
*/162 --l->length;
163return
ok;164
}165
//166
int locateelem_sq(sqlist *l,elemtype e,int (*compare)(elemtype,elemtype))
172if(i<=l->length) return
i;173
else
return0;
174}
175int
compare(elemtype a,elemtype b) else
181}
182//
歸併排序將兩個順序表合併(這兩個順序表都是有序的)
183void mergelist_sq(sqlist *la,sqlist *lb,sqlist *lc)
193while(ilength) lc->elem[k++] = la->elem[i++];
194while(jlength) lc->elem[k++] = lb->elem[j++];
195return
;196
}197
//返回順序表中第i個元素的值
198void getelem(sqlist *l,elemtype i,elemtype *e)
201//
判斷順序表是否非空,是空的,返回true;否則,返回false。
202int emptylist(sqlist *l) else
208}
209//
順序表逆置
210void listinverse(sqlist *l)
217return
;218 }
資料結構 順序表相關操作
project sequence list 資料結構 順序表 creatlist sqlist l,int n 引數 順序表l,順序表長度n 功能 建立長度為的順序表 時間複雜度 o n initlist sqlist l 引數 順序表l 功能 初始化 時間複雜度 o 1 insertlist sq...
《大話資料結構》 3 1順序表相關操作
最近開始學習 大話資料結構 這本書,準備把裡面的範例用c 敲一敲,以備後續複習,目前還是很菜很菜,盡量把子函式寫清楚,主函式可能就考慮的不是那麼周到了。include using namespace std include include class mylist bool isempty 判斷線性...
資料結構 線性表相關
1.佇列 queue 是只允許在一端進行插入,而在另一端進行刪除的運算受限的線性表 2.棧 stack 在電腦科學中是限定僅在棧頂進行插入或刪除操作的線性表。3.鍊錶 linked list 是一種常見的基礎資料結構,是一種線性表,是一種物理儲存單元上非連續 非順序的儲存結構。雙向鍊錶也叫雙鏈表 是...