線性表的理解以及順序表和煉表的比較

2021-10-07 17:05:43 字數 1450 閱讀 5553

線性表分為順序儲存和鏈式儲存:

順序儲存的就是順序表,鏈式儲存分為靜態鍊錶(借助陣列實現),單鏈表,雙鏈表,迴圈多鍊錶(這三個都是通過指標實現)

線性表的基本操作:

initlist(&l):初始化表。構建空的線性表。

length(l):獲取表長,返回線性表l的長度。

locateelem(l,i):按值查詢。

getelem(l,i):按位查詢操作,獲取表中第i位的元素值。

listinsert(&l,i,e):插入,在第i個位置插入元素e.

listdelete(&l,i,&e):刪除操作,刪除第i位的資料並且通過e返回刪除的元素值。

printlist(l):輸出,輸出整個線性表中所有的元素。

empty(l):判斷線性表是否為空,是返回true,不是返回false.

destroylist(&l):銷毀操作,銷毀線性表,釋放線性表l所佔的空間。

順序表基本操作實現:

1.插入操作

bool listinsert(sqlist &l,int i,elementtype e)

if(l.length>=maxsize)

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

l.data[i-1] = e;//將e放入i位置

l.length++; //表長度加1

return true;

}最好情況的時間複雜度為:o(1)

最差情況的時間複雜度為:o(n)

平均的時間複雜度為:o(n)

2.刪除操作

bool listdelete(sqlist &l,int i,elementtype &e)

e = l.data[i];//刪除的值賦給e

for(int j=i;j3,按值查詢

int locateelem(sqlist l,elemtype e){

int i;

for(i=0;i順序表和煉表的比較:

1.訪問(讀寫)方式

順序表可以順序訪問,也可以隨機訪問,鍊錶只能從表頭開始。

2.邏輯結構和物理結構

順序表儲存時,邏輯上相鄰的資料,物理結構上也相鄰。而鍊錶邏輯上相鄰的資料,物理結構上不一定相鄰。

3.查詢插入和刪除操作

按值查詢當順序表有序時,時間複雜度為o(n),無序時為o(log2n),

按序號查詢時,順序表的時間複雜度為o(1),而鍊錶所有的時間複雜度為o(n).

順序表刪除和插入時平均需要移動半個表的元素,而鍊錶的刪除和插入只需要需改指標域就行。因此,鍊錶的儲存密度不夠大。

4.空間分配

順序表需要預先分配一塊儲存空間,預分配過大將會導致空間浪費,過小就會導致溢位。動態分配雖然可以擴充,但是沒有足夠大的連續儲存空間時會導致分配失敗,鏈式儲存空間是只在需要的時候就會申請,只要有記憶體空間就可以分配,操作靈活,高效。

線性表(順序表 鍊錶)

在程式中,經常需要將一組 通常是同為某個型別的 資料元素作為整體管理和使用,需要建立這種元素組,用變數記錄他們傳進傳出函式等。一組資料中包含的元素個數可能發生變化。對於這種需求,最簡單的解決方案就是將這樣一組元素看成乙個序列,用元素在序列裡的位置和順序,表示實際應用中的某種有意義的資訊,或者表示資料...

線性表之順序表和煉表

標籤 單鏈表 順序表優缺點 時間複雜度 線性表 2016 03 23 23 43 5200人閱讀收藏 舉報 c c 44 作者同類文章x 這裡比較的是是基於c語言實現的順序表與單鏈表,與其他語言的實現可能會有差異,但我相信語言是相通的,它們的實現機制應該也差不多。1 what 什麼是順序表和單鏈表 ...

線性表和鍊錶

線性表在python中有元組 列表 集合以及字典,非線性表目前介紹鍊錶。名稱 儲存型別 是否可變 是否有序 儲存是否可重複 列表1.使用中括號括起來 如 list 1,2,3,4 2.可以儲存任何型別 3.可以儲存不同型別的資料 不建議 可以增 刪 改 查 是 是 元組1.使用小括號括起來 如 tu...