資料結構 線性表的鏈式儲存結構及實現

2021-09-29 09:35:19 字數 3135 閱讀 1483

根據線性表的長度動態的申請儲存空間,以解決順序儲存中存在的儲存空間難以確定的問題。

名字,記憶體位址,值

指標變數的右值本身又是乙個左值。

結點之間可以連續,也可以不連續儲存;

結點的邏輯順序與物理順序可以不一致;

錶可擴充。

link欄位

;如果鍊錶有頭節點,則鏈式結構中的第乙個節點稱為頭結點:其資料域可以儲存一些附加資訊,如鍊表長度;其指標域指向鍊錶中的第乙個節點。

template

<

class

t>

class

linklist

linklist ( t a,

int n )

;~linklist ();

int length ();

t get (

int i )

;int locate ( t x )

;void insert (

int i, t x )

;  t delete (

int i )

;void printlist ();

private

:    node

*first;

// 單鏈表的頭指標 , 可以省略

};

插到頭結點後面!!順序是倒的!!

template

<

class

t>

linklist

::linklist

(t a,

int n)

}

將新建的節點插入到鍊錶的最後順序是正的!!注意尾指標

template

<

class

t>

linklist

::linklist

(t a,

int n)

r->next=

null

;//單鏈表建立完畢,將終端結點的指標域置空

}

template

<

class

t>

linklist

::printlist()

}

}

要考慮首元節點的情況

node

*r; head=

null

;if(n<=

0)return

; s=

new node

; s-

>data=a[0]

; s-

>next=head;

head=s;

r=head;

for(

int i=

1;i)

偽**

1.工作指標p初始化,計數器初始化

2.執行下列操作,直到p為空或指向第i個節點

2.1 工作指標後移

2.2 計數器增1

3. 若p為空,則第i個元素不存在,丟擲位置異常;否則查詢成功,返回節點p的資料元素

實現

template

<

class

t>

t linklist

::get

(int i)if(

!p)throw

"位置"

;else

return p-

>data;

}

==時間效能為 o ( n ) ==。

偽**

1 工作指標p初始化,計數器初始化

2 查詢第i-1個節點,並使工作指標p指向該節點

3 若查詢不成功(p==null),說明位置錯誤,丟擲位置異常,否則

3.1 生成乙個元素值為x的新節點s

3.2 將s插入到p之後

實現

template

<

class

t>

void linklist

::insert

(int i, t x)if(

!p)throw

"位置"

;else

}

insert

(int i, t x)

p=first ; j=1;

//工作指標p初始化

while

(p && j

if(!p)throw

"位置"

"位置"

;//結點p不存在或結點p的後繼結點不存在

資料結構 鏈式儲存線性表

鏈式儲存結構的線性表 簡稱為鍊錶 將採用一組位址任意的儲存單元存放線性表中的資料元素,鏈式結構的線性表不會按線性的邏輯順序來儲存資料元素,它需要在每乙個資料元素裡儲存乙個引用下乙個資料元素的引用。優點 插入 刪除元素快,充分利用計算機記憶體空間 缺點 查詢元素需要整體遍歷,空間開銷大 單鏈表 cre...

線性表的鏈式儲存 資料結構

為了表示每個資料元素與其直接後繼資料元素之間的邏輯關係,除了儲存本身的資訊之外,還需儲存乙個指示其直接後繼的資訊 即直接後繼的儲存位置 我們把儲存資料元素資訊的位置稱為資料域,把儲存其直接後繼資訊的位置稱為指標域。這兩部分組成資料元素的結點 node 頭結點頭結點是為了操作的統一和方便而設立的,放在...

資料結構 線性表之鏈式儲存結構

資料結構定義 common.h ifndef hi comm h define hi comm h include include include include define list init size 100 線性表儲存空間的初始分配量 define list increment 10 線性表...