資料結構複習(二)線性表(2)單鏈表

2021-10-05 11:58:29 字數 3613 閱讀 8552

單鏈表定義

實現

typedef

struct lnodelnode,

* linklist;

優缺點

初始化不帶頭結點

//帶頭結點

bool

initlist

(linklist &l)

帶頭結點頭結點不儲存元素,頭結點之後的結點才開始儲存元素

bool

initlist

(linklist &l)

l->next = null;

return

true

;}

插入

1.按位序插入

帶頭結點

o(n)

bool

listinsert

(linklist &l,

int i,elemtype e)

if(p==

null

)return

false

; lnode *s=

(lnode *

)malloc

(sizeod

(lnode));

s->data=e;

s->next=p-

>next;

p->next=s;

return

true

;}

不帶頭結點

插入第乙個結點的操作與其他不同

bool

listinsert

(linklist &l,

int i ,elemtype e)

lnode *p;

int j =0;

while

(p!=

null

&& jif(p==

null

) lnode *s =

(lnode *

)malloc

(sizeof

(lnode));

s->data=e;

s->next=p-next;

p->next=s;

return

true

;}

指定結點的後插操作

在結點p後插入元素e

bool

insertnextnode

(lnode *p,elemtype e)

在指定結點前面插入前插

o(1)

將新加入的結點插到p後面,然後將s->data賦值為p->data,p->data賦值為e

bool

insertpriornode

(lnode *p, elemtype e)

刪除

按照位序刪除

帶有頭結點

bool

listdelete

(linklist &l,

int i,elemtype &e)

if(p==

null

|| p-

>next ==

null

)return

false

; lnode *q = p-

>next;

//q指向被刪除的結點

e = q-

>data;

//用e返回元素的值

p->next = q-

>next;

//跳過q指向原來q的下乙個元素

free

(q)//釋放資源

return

true

;}

o(n)

單鏈表沒辦法逆向檢索

查按位查詢

lnode *

getelem

(linklist l,

int i)

return p;

}

o(n)

按值查詢

lnode *

getelembyvalue

(linklist l,elemtype e)

return p;

}

尾插法==設定乙個指向表尾結點的指標

頭插法

typedef

struct dnodednode,

*dlinklist;

p後面加上s結點

bool

insertnextdnode

(dnode *p,dnode *s)

bool

dletenextdnode

(dnode *p)

單鏈表的最後乙個結點的指標指向null

迴圈鍊錶的最後䘝結點的指標指向頭結點

迴圈雙鏈表中的prior指標指向尾結點,next指向頭結點

如何判空

迴圈單鏈表:head.next==head

bool

empty

(linklist l)

else

return

false

;}

迴圈雙鏈表:head.nexthead && head.priorhead

bool

empty

(dlinklist l)

如何判斷結點p是否是表尾/表頭結點

//單鏈表判斷尾結點

表頭:if(current.next ==l)

//判斷雙鏈表的表尾

if(current.next ==l)

如何在表頭、表中、表尾插入/刪除結點(書)

bool

initlist

(linklist &l)

bool

initdlinklist

(dlinklist &l)

定義靜態鍊錶==容量不可以改
#define maxsize 10

struct node

;void

testdlinklist()

;}

查詢n(n)

插入位序為i的結點

1.找到乙個空的結點,存入資料元素

2.從頭結點出發找到位序為i1的結點

3.修改新結點的next

4.修改i-1號結點的next

適用場景

1.不支援指標的低階語言

2.資料元素數量固定不變的場景eg:檔案分配表fat

順序表的優點:支援隨機訪問,儲存密度高

缺點:大片連續空間分配不方便,改變容量不方便

鍊錶的優點:離散的小空間分配方便,改變容量方便

缺點:不可隨機訪問,儲存密度低

資料結構複習二 線性表

寫在前面 考完離散就剩兩天覆習資料結構,還有七章,我可能要沒了 衝衝衝!定義是 由n 0 個資料特性相同的元素構成的有限序列n 0時為空表 非空線性結構的特點 1 第乙個 元素唯一 2 最後乙個 元素唯一 3 除第乙個之外,資料結構中的每個資料元素均只有乙個前驅 4 除最後乙個之外,每個資料元素均只...

資料結構(二) 線性表

線性表是最簡單最常用的資料結構,是一種典型的線性儲存結構。定義 線性表是由n n 0 個資料元素 結點 a1 a 2 an 組成的有限序列。n為表的長度。當n 0,為 空表 n 0時,為 a1,a 2,an 邏輯特徵 非空的線性表只有乙個頭結點,也只有乙個終結點,頭結點只有乙個直接後繼結點,而沒有直...

資料結構複習(二)線性表(1)順序表

0.1 線性表定義 具有相同資料型別的n個資料元素的有限序列 一般表示為l a1,a2,a3 an 注意點 儲存資料型別都是相同的 是有限的 是乙個序列,即儲存的內容是有次序的 0.2前驅與後繼 除第乙個元素 表頭元素 外,每個元素都有且僅有乙個前驅。除最後乙個元素 表尾元素 外,每隔元素都有且僅有...