C 鍊錶結構的常用操作(單鏈表)

2021-10-18 12:32:40 字數 1501 閱讀 7599

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...