struct listnode
listnode *head=
new listnode;
//定義鍊錶的頭指標
listnode *p=
null
;//初始化指標變數
就像這樣,乙個基本的單鏈表就已經構建好了。
在鍊錶的操作中,新增乙個啞節點(dummy node),讓它的指標指向鍊錶的頭節點,這樣在刪除節點的時候,就不需要再判斷刪除的是否是頭結點了。
listnode *dummy =
new listnode (
0, head)
;
這裡new dummy的含義:dummy->data = 0, dummy->next = head;
即:資料域為0,指標域指向鍊錶的頭結點
//這樣表示建立乙個啞結點prehead,指向頭結點的前乙個位置
listnode *prehead=
newlistnode(-
1);
//在頭指標有資料的前提下(以下同)
p=head;
while
(p!=
null
)
void
get(listnode *head,
int i)
if(p!=
null
&&j==i)
else cout<<
"i not exsit!"
;}
void
insert
(listnode *head,
int i,
int x)
//插入x到第i個元素之前
//while迴圈結束,此時p指向第i-1個結點
//插入部分**
listnode *s=
new listnode;
s->data=x;
s->next=p-
>next;
//此時這裡p->next指向的就是第i個
p-next=s;
}
void
insert
(listnode *head,
int i)
//while迴圈結束,此時p指向第i-1個結點
//插入部分**
listnode *s=
new listnode;
s=p-
>next;
//此時s指向第i個結點
p->next=p-
>next-
>next;
free
(s);
}
int
len(listnode *head)
return n;
}
鍊錶的基本操作 單鏈表 雙向鍊錶 迴圈鍊錶
本週第一次講座,學長給我們簡單的概述了資料結構和演算法,然後對鍊錶的一些操作進行了講解,下來之後,我把原來書上的一些 鍊錶的基本操作與鍊錶的逆置,排序等操作結合起來,整理出來 鍊錶是由結點構成的,關鍵是定義結點 c語言程式設計上兩大特例 鍊錶節點的定義 遞迴函式的定義。這兩個違反了先定義再使用。3....
單鏈表以及雙向鍊錶的操作
include include define max 30 typedef struct s 單向鍊錶的儲存結構 s,linklist typedef struct dulist 雙向鍊錶的儲存結構 dulnode,dulinklist int initlist s s 建立空的單鏈表 void s...
C 資料結構 單鏈表 雙鏈表與迴圈鍊錶
注意 以下所有鍊錶均包含空的頭結點。include stdafx.h include using namespace std 節點類 class node 乙個引數的建構函式 node node nextvalue 單鏈錶類 class singlelinkedlist node p newnode...