C語言 線性表

2022-03-30 06:04:40 字數 2781 閱讀 3761

#include

#include

#include

#define list_size 100

#define list_increment 10

typedef int datatype ;

typedef structseqlist;

/*initlist(&l)

初始條件:無

操作結果:構造乙個空的線性表。成功返回0出錯返回-1*/

int initlist(seqlist *l)

/*destroylist(&l)

初始條件:線性表l已經存在

操作結果:銷毀線性表l。成功返回0出錯返回-1*/

int destroylist(seqlist *l)

/*listempty(l)

初始條件:線性表l已經存在

操作結果:若l為空表,返回0,否則返回-1*/

int listempty(seqlist l)

else

return -1;

}/*listlength (l)

初始條件:線性表l已經存在

操作結果:返回表的長度,失敗返回-1*/

int listlength(seqlist l)

/*getelem(l,i,&e)

初始條件:線性表l已經存在1=list_size)

*e = l.data[i];

return 0;

}/*locateelem(l,e)

初始條件:線性表l已經存在

操作結果:返回l中第乙個和e相等的序列號,若元素不存在,則返回-1*/

int locateelem(seqlist l, datatype e)

return -1;

}/*priorelem(l,cur_e,&pre_e)

初始條件:線性表已經存在

操作結果:若cur_e是l中的元素,且不是第乙個,則用pre_e返回它的前驅元素,否則返回錯誤-1,成功返回0*/

int priorelem(seqlist l, datatype cur_e, datatype *pre_e)

}/*nextelem(l,cur_e,&next_e)

初始條件:線性表已經存在

操作結果:若cur_e是l中的元素,且不是最後乙個,則用next_e返回它的後繼元素,否則返回錯誤-1,成功返回0*/

int nextelem(seqlist l, datatype cur_e, datatype *next_e)

}/*listinsert(&l,i,e)

初始條件:線性表l已經存在

操作結果:在l中第i個位置之前插入新的資料,表長加1,返回0成功,-1錯誤*/

int listinsert(seqlist *l, int i, datatype e)

if (l->length >= l->listsize)

l->data = (datatype *)realloc(l->data, (list_increment + list_size)*sizeof(datatype));

if (!l->data)

datatype *q=null;

q = &l->data[i - 1];//插入位置

datatype *p = null;

for (p = &l->data[l->length - 1]; p >= q;p--)//從最後乙個位置開始依次把前面的值賦值給後乙個位置

*q = e;

l->length++;

l->listsize += list_increment;

return 0;

}/*listdelete(&l,i,&e)

初始條件:線性表l存在

操作結果:刪除l中序號為i的元素,並將其值由e帶回,成功返回0,出錯返回-1*/

int listdelete(seqlist *l, int i, datatype *e)

datatype *q = null;

datatype *p = null;

q = &l->data[i - 1];//刪除元素位置

*e = *q;

p = &l->data[l->length - 1];//表尾位置

while (q <= p)

l->length--;

return 0;

}int main(void)

printf("the length of list is  %d\n", listlength(l));

k = 5;

getelem(l, k-1, &e);

printf("第%d個數為%d\n",k, e);

if (listempty(l))

printf("list is not empty\n");

printf("%d的序號是%d\n", 25, locateelem(l, 25));

priorelem(l, 4,&ee);

printf("%d的前乙個元素是是%d\n", 4, ee);

nextelem(l, 256, &eee);

printf("%d的後乙個元素是是%d\n", 256, eee);

listdelete(&l,1,&eeee);

printf("刪除元素是%d\n", eeee);

printf("the length of list is  %d\n", listlength(l));

destroylist(&l);

getchar();

return 0;

}

C語言線性表

include include include 定義乙個linearlist結構體 typedef struct linearlist linearlist 初始化線性表 param 無 return linearlist linearlist initlinearlist return ptr 插...

線性表操作(C語言)

題目描述 順序表是我們資料結構中的基本儲存形式,現在給定乙個順序表,有如下操作 insert x y 在順序表中x位置插入y元素,遍歷輸出當前順序表的所有元素。delete x 刪除順序表中的x元素,如果有多個x元素,只刪除第乙個x,遍歷輸出當前順序的所有元素。locate x 輸出順序表中x元素的...

C語言之線性表

測試 線性表,也叫做順序表。類似鍊錶,但是裡面的資料儲存空間是連續的,不像鍊錶是片段的,不連續。順序儲存,資料連續的儲存,中間不能有空值。如果需要插入資料,在插入的位置之後的資料需要乙個乙個的往後移動,移動需要遵循把最後乙個資料後移,再後移最後乙個資料的前乙個資料,插入位置之後的資料依次後移即可,然...