線性順序表的建立與使用

2021-07-29 09:01:52 字數 1995 閱讀 4130

#include#include#include#define true 1

#define false 0

#define ok 1

#define error 0

typedef int status;

typedef int boolean;

typedef int elemtype;

#define list_init_size 10

#define listincrement 10

typedef struct

sqlist;

/*建立結構體(sqlist)*/

int empty(sqlist l)

/*建立子函式(子程式),這是用來判斷順序表是否為空*/

status initlist(sqlist &l)

/*初始化順序表,產生乙個新的儲存空間*/

status listinsert(sqlist &l,int i,elemtype e)

/*判斷儲存空間是否已滿,增加儲存容量*/

q=l.elem +i-1;

for(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)

p=l.elem+i-1;

*e=*p;

q=l.elem+l.length-1;

for(++p;p<=q;++p)

*(p-1)=*p;

l.length--;

return ok;

//刪除演算法

}status locateelem(sqlist l,elemtype e,status (*compare)(elemtype,elemtype))

//查詢值,返回位序

status compare(elemtype c1,elemtype c2)

//配套查詢位序函式

status getelem(sqlist l,int i,elemtype &e)

//取值函式

status destroylist(sqlist &l)

//銷毀順序線性表l

status clearlist(sqlist &l)

//將l重置為空表

int listlength(sqlist l)

//返回l中資料元素個數

void output(sqlist l)

//下面開始執行主函式

main()

// if(empty(l)) printf("empty\n");

for(i=1;i<=10;i++)

listinsert(l,1,i);

printf("你製作的順序表為:");

output(l);printf("\n");

listdelete(l,1,&x);

printf("要刪除的值為:%d\n",x);//輸出刪除的值

printf("\n");

printf("刪除操作後的順序表為:");

output(l);printf("\n");

w=locateelem(l,1,compare);

printf("查詢值的位序為:%d\n",w);//輸出查詢值的位序

printf("\n");

getelem(l,9,z);

printf("你要取的值為:%d\n",z);//輸出取值

printf("\n");

clearlist(l);

destroylist(l);//銷毀順序線性表l

}

順序線性表的建立插入

include include define list init size 100 define listincrement 10 typedef structsqlist int initlist sqlist l l length 0 l listsize list init size retu...

線性表的順序表示與實現 順序表

一.順序表的定義 用一組位址連續的儲存單元依次存放線性表的結點,由此得到的線性表簡稱為順序表 sequential list 二.結點ai的儲存位址 假設表中每個結點占用c個儲存單元,其中第乙個單元的儲存位址作為該結點的儲存位址,並設表中開始結點a1的儲存位址 簡稱為基位址 是loc a1 那麼結點...

順序表的建立與運算

順序表的建立 對於不少初學資料結構的人來說,理解資料的處理和儲存方式還是比較簡單的,但是真正的問題在於資料結構中對資料處理的諸多函式的實現上,所以我在此將資料結構中重要的又是基礎的各種表和圖的建立和運算的函式總結出來,以供初學者使用。今天講得是順序表,所謂的順序表其實就是線性表依據儲存結構的不同而命...