1/*2編譯器vc6++
3檔名1.cpp
4**版本號:1.056
*/7 #include 8 #include 9
10#define ok 1
11#define error 0
12#define true 1
13#define false 0
14#define overflow -2
15#define list_init_size 10
16#define list_increment 10
1718 typedef int
elemtype;
19 typedef int
status;
20 typedef struct
sqlist;
2526 status initsqlist(sqlist *l)//
初始化線性表,分配容量
2736
37 status assignsqlist(sqlist *l) //
按位序assign值到線性表中
3847
else
48return
error;49}
5051 status listinsert(sqlist *l, int i, elemtype e) //
元素插入
5261
if ((*l).length >= (*l).listsize)
6271
for (q = (*l).base + (*l).length - 1; q >= (*l).base + i-1;q--)
72 *(q + 1) = *q;
7374 *((*l).base + i - 1) =e;
75 (*l).length++;
76return
ok;77}78
79 status getelem(sqlist *l,int i,elemtype *e)
8086
else
8791}92
93 status mergelist(sqlist *lc,sqlist la,sqlist lb)
94114
else
115119
}120
121while(i<=la.length)
122126
while(j<=lb.length)
127131
132return
ok;133
}134
135 status listdelete(sqlist *l,int i,elemtype *e)
136146
147 status priorelem(sqlist *l,elemtype e,elemtype *prior_elem)
148154
if(i==(l->length+1
))155
159else
160166
else
167171
}172
}173
174 status nextelem(sqlist *l,elemtype e,elemtype *next_elem)
175181
if(i==(l->length+1
))182
186else
187193
else
194198
}199
}200
/*201
返回l中第1個與e滿足關係compare()的資料元素的位序。
202若這樣的資料元素不存在,則返回值為0。
203*/
204int locateelem(sqlist *l,elemtype e,bool (*compare)(elemtype e,elemtype a))
205
214215
bool
comp(elemtype e,elemtype a)
221222 status printlinklist(sqlist l) //
遍歷輸出線性表中的元素
223228
229return
ok;230
}231
232 status destroylist(sqlist *l)
242return
error;
243}
244245 status clearlist(sqlist *l)//
將線性表重置為長度為0的空表
246250
251bool isempty(sqlist *l) //
判斷線性表是否是空表
252258
259void
main()
260;
278int b[10]=;
279280
for(i=0;i<5;i++)
281 listinsert(&la,la.length+1
,a[i]);
282283
for(i=0;i<10;i++)
284 listinsert(&lb,lb.length+1
,b[i]);
285286
printlinklist(la);
287 printf("
\n***************===\n");
288printlinklist(lb);
289 printf("
\n***************===\n");
290291 s=mergelist(&lc,la,lb);
292printlinklist(lc);
293 printf("
\n***************===\n");
294295
//合併3個線性表結束
296297
if(s)
298 s=assignsqlist(&l);
299300
printlinklist(l);
301 printf("
\n***************===\n");
302 printf("
請輸入要獲得的元素的位序: ");
303 scanf("
%d",&i);
304 s=getelem(&l,i,&e);
305 printf("
\n線性表中位序為%d的元素為%d
",i,e);
306 printf("
\n***************===\n");
307 printf("
",locateelem(&l,6
,comp));
308/*
printf("請輸入您要插入的元素: ");
309scanf("%d", &theelem);
310printf("請輸入您要插入元素的位置: ");
311scanf("%d", &i);
312listinsert(&l, i, theelem);
*/313 printf("
\n***************===\n");
314 printf("
\n您刪除第乙個元素後的線性表為\n");
315 listdelete(&l,1,&e);
316printlinklist(l);
317 printf("
\n您刪除的這個元素為%d
",e);
318 printf("
\n***************===\n");
319//
前驅開始
320 priorelem(&l,1,&prior_elem);
321 printf("
\n***************===\n");
322 printf("
元素1的前驅為%d
",prior_elem);
323 printf("
\n***************===\n");
324//
前驅結束
325//
後繼開始
326 nextelem(&l,9,&next_elem);
327 printf("
\n***************===\n");
328 printf("
元素9的後繼為%d
",next_elem);
329 printf("
\n***************===\n");
330//
後繼結束
331if
(s)332
335336
printlinklist(l);
337 system("
pause");
338 }
線性表 順序儲存C語言實現
定義 線性表是包含有限相同型別元素,除首元素外,其他元素只有乙個唯一前驅元素,除尾元素外,其他元素只有乙個後繼元素的線性結構表。均有2種儲存方式 順序儲存 鏈式儲存 資料結構定義 typedef struct tabletable 基本操作 table inittable t.length 0 re...
線性表 順序儲存結構 C語言實現
參考 大話資料結構 程杰 部落格 豆瓣 主要包括 列表定義 判斷列表是否為空 初始化列表 列印列表 清空列表 得到第i個位置元素 元素定位 列表第i個元素插入 列表第i個元素刪除 計算列表長度 include include define ok 1 define error 0 define tru...
線性表的順序儲存結構(C語言實現)
最近在研究資料結構,看了好多資料結構方面的書,但好多書都是用的偽 實現,對初學者或者語言功底不深厚的同學來說很不友好,也有好多書說是用c語言實現,但應用了c 的東西,比如c 中的引用,導致 晦澀難懂。學資料結構不能只是看書,一定要將各種結構用 實現,我也將各個部分實現的 貼出來。首先是線性表的順序儲...