線性表的順序儲存結構的c語言實現

2021-06-22 00:56:02 字數 1833 閱讀 9716

線性表的順序儲存結構可以由一維陣列實現;其查詢第i個元素的時間複雜度是o(1),直接訪問對應下標的陣列值即可data[i-1](假設陣列從0開始記);但插入刪除操作的時間複雜度是o(n),因為刪除/插入第i個元素時,i號元素其後的所有元素都要相應移動!

#include #include //線性表的順序儲存結構

#define maxsize 100

#define ok 1

#define error -1

#define true 1

#define false 0

typedef int status;

typedef int elemtype;//定義元素基本資料型別

//定義結構

//順序儲存結構可以用一維陣列實現

typedef struct list;

//有哪些操作?

//1. 初始化,建立乙個空的線性表

status initlist(list *l)

l->length=0;//l->lehgth等同於(*l).length

return ok;

}//2. 判斷線性表是否為空

status listempty(list l)else

}//3. 線性表的整表建立

status createlist(list *l,int n)

srand(time(0));

int i;

for(i=0;idata[i]=rand()%100+1;

}l->length=n;

return ok;

}//4. 線性表的元素獲取

status getelem(list l,int i,elemtype *e)

*e=l.data[i-1];

return ok;

}//5. 線性表 插入元素

status insertelem(list *l,int i,elemtype e)

if(i<1 || i>(l->length+1))

//插入後,其後的元素都要後移

int j;

for(j=l->length;j>=i;j--)

l->data[i-1]=e;

//插入之後,線性表的長度加1

++(l->length);

return ok;

}//6. 線性表 刪除元素

status deleteelem(list *l,int i,elemtype *e)

*e=l->data[i-1];

//原線性表中第i+1~l->length位置的元素依次前移

int j;

for(j=i;jlength;j++)

--(l->length);

return ok;

}//7. 線性表的整表刪除

status deletelist(list *l)

int i;

for(i=0;ilength;i++)

l->length=0;

return ok;

}int main()

else

if(true==listempty(l))

printf("輸入想要建立的線性表(各項數值範圍為1~100)的長度:");

線性表的順序儲存結構(C語言實現)

最近在研究資料結構,看了好多資料結構方面的書,但好多書都是用的偽 實現,對初學者或者語言功底不深厚的同學來說很不友好,也有好多書說是用c語言實現,但應用了c 的東西,比如c 中的引用,導致 晦澀難懂。學資料結構不能只是看書,一定要將各種結構用 實現,我也將各個部分實現的 貼出來。首先是線性表的順序儲...

線性表 順序儲存結構 C語言實現

參考 大話資料結構 程杰 部落格 豆瓣 主要包括 列表定義 判斷列表是否為空 初始化列表 列印列表 清空列表 得到第i個位置元素 元素定位 列表第i個元素插入 列表第i個元素刪除 計算列表長度 include include define ok 1 define error 0 define tru...

線性表 順序儲存C語言實現

定義 線性表是包含有限相同型別元素,除首元素外,其他元素只有乙個唯一前驅元素,除尾元素外,其他元素只有乙個後繼元素的線性結構表。均有2種儲存方式 順序儲存 鏈式儲存 資料結構定義 typedef struct tabletable 基本操作 table inittable t.length 0 re...