線性表的順序儲存結構可以由一維陣列實現;其查詢第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...