#include
#include
#define true 1
#define false 0
#define ok 1
#define error 0
#define infeasible -1
#define overflow -2
typedef int status;
typedef int elemtype;
#define list_init_size 100
#define listincrement 10
typedef structsqlist; //順序表
status initlist(sqlist &l)
status destorylist(sqlist &l)
status clearlist(sqlist &l)
status listempty(sqlist l)
status listlength(sqlist l)
status getelem(sqlist l, int i, elemtype &e)
else
return false;
}status compare(elemtype a, elemtype b)
status locateelem(sqlist l, elemtype e, status(*compare)(elemtype, elemtype))
status priorelem(sqlist l, elemtype cur_e, elemtype &pre_e)
status nextelem(sqlist l, elemtype cur_e, elemtype &next_e)
status listinsert(sqlist &l, int i, elemtype e)
elemtype* q=&(l.elem[i-1]); //q為插入位置
for(elemtype* p=&(l.elem[l.length-1]);p>=q;--p) //插入位置及之後的元素右移
*(p+1)=*p;
*q=e;
++l.length;
return ok;
}status listdelete(sqlist &l, int i, elemtype &e)
void mergelist(sqlist la, sqlist lb, sqlist &lc)
//已知順序線性表la和lb的元素按值非遞減排列
//歸併la和lb得到新的順序線性表lc,lc的元素也按值非遞減排列
elemtype* pa=la.elem;
elemtype* pb=lb.elem;
lc.listsize=lc.length=la.length+lb.length;
elemtype* pc=(elemtype*)malloc(sizeof(elemtype)*lc.listsize);
if(!lc.elem)
exit(overflow);
elemtype* pa_last=pa+la.length-1;
elemtype* pb_last=pb+lb.length-1;
while(pa<=pa_last&&pb
while(pa<=pa_last)
*pc++=*pa++;
while(pb<=pb_last)
*pc++=*pb++;
}int main()
線性表的順序表示與實現 順序表
一.順序表的定義 用一組位址連續的儲存單元依次存放線性表的結點,由此得到的線性表簡稱為順序表 sequential list 二.結點ai的儲存位址 假設表中每個結點占用c個儲存單元,其中第乙個單元的儲存位址作為該結點的儲存位址,並設表中開始結點a1的儲存位址 簡稱為基位址 是loc a1 那麼結點...
線性表的順序表示與實現
線性表是有n個元素的非空有限序列 存在惟一的乙個被稱作 第乙個 資料的元素 存在惟一的乙個被稱作 第後乙個 資料的元素 除第乙個與最後乙個之外,其它元素都存在唯一的乙個前驅和唯一的乙個後續 複雜的線性表中的元素可以由多個資料項組成 同乙個線性表中的元素型別必須相同 線性表的順序表,是用一組位址連續的...
1 1線性表的順序表示與實現
線性表的順序儲存指的是將線性表中的元素存放在一組連續的儲存單元中,這樣使得在邏輯上是相鄰的,物理儲存上也是相鄰的。採用順序儲存結構的線性表稱為順序表。順序表反應了線性表中元素的邏輯關係,只要知道第乙個元素的儲存位址就能得到線性表中任何乙個元素的儲存位址。同樣已知任何乙個元素的儲存位址都可以得到其他元...