線性表之單鏈表

2021-10-14 04:14:26 字數 3125 閱讀 5079

二、單鏈表的讀取

三、單鏈表的插入

四、單鏈表的刪除

五、單鏈表的整表刪除

六、顯示鍊錶中的資料

總結

typedef

struct node

node;

typedef

struct node* linklist;

節點由存放資料元素的資料域和存放後繼節點位址的指標域組成

目的:建立長度為n的鍊錶例如:7->6->5->4->3->2->1->null

實現:①建立l為頭節點:資料域為空,指標域指向null作為頭指標

②新增n個節點:建立結點指標p,每次建立申請空間生成乙個新的節點

利用指標運算元據域的賦值。從頭指標後開始插入,每次插入的結點為鍊錶的第乙個結點

void

createlisthead

(linklist &l,

int n)

}

因為每次按「順序」插入的是第乙個節點,所以鍊錶資料是「倒序」的

目的:建立長度為n的鍊錶例如:1->2->3->4->5->6->7->8->9->10->null

實現:①建立l為頭節點,賦給指標r,指標r作為游標

②新增n個節點:建立結點指標p,每次建立申請空間生成乙個新的節點

利用指標運算元據域的賦值。從頭指標後開始插入,每次插入的結點為鍊錶的最後乙個結點

③每次插入後把新插入的結點賦給游標r,標記最後乙個結點的位置

④最後將r指向null作為結束

void

createlisttail

(linklist &l,

int n)

r->next=

null

;}

因為每次按「順序」插入的是最後乙個節點,所以鍊錶資料也是「順序」的

功能:讀取鍊錶中第i個資料的值

實現:①建立p指向第乙個結點,利用j作為結點的下標

②向後移動p,直到找到所在結點,若j>i或p為空說明鍊錶沒有第i個元素

③得到第i個資料的值

void

getelem

(linklist &l,

int i)if(

!p||j>i)

int e=p-

>data;

cout<

return

;}

功能:將資料e插入到鍊錶第i個資料之後

實現:①建立p指向第乙個結點,利用j作為結點的下標

②向後移動p,直到找到所在結點,若j>i或p為空說明鍊錶沒有第i個元素

③生成新的節點add,將e賦值給add的資料域,先讓add指向p的下乙個節點,再讓p指向add

void

listinsertaft

(linklist &l,

int i,

int e)if(

!p||j>i)

linklist add=

(linklist)

malloc

(sizeof

(node));

add-

>data=e;

add-

>next=p-

>next;

p->next=add;

return

;}

必須先讓add指向p的下乙個節點,再讓p指向add。

若先讓p指向add,則p的下乙個節點就是add,add沒辦法指向原來p後的節點,相當於鍊錶「斷了」。

功能:刪除單鏈表中第i個元素

實現:①建立p為頭指標,利用j作為標記,j比p的下標大1

②向後移動p,直到找到所刪除結點前乙個節點,若j>i或p->next為空說明鍊錶沒有第i個元素

③建立q指向p之後的第乙個結點(所刪除的結點),再使p指向的下乙個節點為q的下乙個節點,即跳過q這個節點

④釋放結點q的記憶體

void

listdelete

(linklist &l,

int i)if(

!(p-

>next)

||j>i)

q=p-

>next;

p->next=q-

>next;

cout<

>data<

free

(q);

return

;}

功能:刪除整個鍊錶

實現:①建立p指向第乙個結點,將p賦值給q

②先釋放掉q的記憶體,再向後移動p,直到表尾

③使頭指標l指向null,表中不再有資料元素

void

clearlist

(linklist &l)

l->next=

null

; cout<<

"刪除成功!"

<

}

功能:顯示所有資料

實現:建立p指向第乙個結點,每次向後移動輸出資料即可

void

show

(linklist &l)

cout<<

"null"

<

return

;}

本篇介紹了對單鏈表的建立、插入、刪除等操作。使用c++的指針對鏈式儲存結構進行操作十分靈活,有牽一髮而動全身的效果。

線性表之單鏈表

cpp view plain copy linkedlist linc 2013.2.26 include include include define ok 1 define error 1 define ture 1 define false 0 struct node typedef stru...

線性表之單鏈表

零個或多個資料元素的有限序列,線性表中的元素是一對一的關係,除了第乙個元素和最後乙個元素外,其他元素都是首尾相接的。線性表有兩種儲存方式,一種是順序儲存結構,另一種是鏈式儲存結構。指用一段位址連續的儲存單元依次儲存線性表的資料元素。優點 無需為表示元素間的邏輯關係而增加額外的儲存空間 隨機查詢元素,...

線性表之單鏈表

template typenamet structnode 頭結點 如果鍊錶有頭節點,則鏈式結構中的第乙個節點稱為頭結點 其資料域可以儲存一些附加資訊,如鍊表長度 其指標域指向鍊錶中的第乙個節點。template class linklist linklist t a int n linklist ...