二、單鏈表的讀取
三、單鏈表的插入
四、單鏈表的刪除
五、單鏈表的整表刪除
六、顯示鍊錶中的資料
總結
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
必須先讓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
;}
若先讓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指向第乙個結點,每次向後移動輸出資料即可
本篇介紹了對單鏈表的建立、插入、刪除等操作。使用c++的指針對鏈式儲存結構進行操作十分靈活,有牽一髮而動全身的效果。void
show
(linklist &l)
cout<<
"null"
<
return
;}
線性表之單鏈表
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 ...