根據線性表的長度動態的申請儲存空間,以解決順序儲存中存在的儲存空間難以確定的問題。
名字,記憶體位址,值
指標變數的右值本身又是乙個左值。
結點之間可以連續,也可以不連續儲存;
結點的邏輯順序與物理順序可以不一致;
錶可擴充。
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 線性表...