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