生活随笔
收集整理的這篇文章主要介紹了
链表之双向链表
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
又是敲代碼學(xué)習(xí)的一天,雖然學(xué)的很痛苦,但是看到自己學(xué)完后有成果出來(lái)還是 很高興的。
接下來(lái)廢話不多說直接上代碼,代碼里有各個(gè)函數(shù)的解釋說明,貫穿著我對(duì)這個(gè)雙向鏈表的理解
typedef struct Node
{int data
; Node
* left
; Node
* right
;
}Node
;
Node
* createHeadNode()
{Node
* headNode
= (Node
*)malloc(sizeof(Node
));headNode
->left
= headNode
->right
= NULL;return headNode
;
}
Node
* createNode(int data
)
{Node
* newNode
= (Node
*)malloc(sizeof(Node
));newNode
->data
= data
;newNode
->left
= newNode
->right
= NULL;return newNode
;
}
void headAddNode(Node
* headNode
,int data
)
{Node
* newNode
= createNode(data
);if (headNode
->right
== NULL){headNode
->right
= newNode
;newNode
->left
= headNode
;}else{headNode
->right
->left
= newNode
;newNode
->right
= headNode
->right
;newNode
->left
= headNode
;headNode
->right
= newNode
;}
}
void tailNodeData(Node
* headNode
,int data
)
{Node
* newNode
= createNode(data
);Node
* proPMove
= headNode
;Node
* pMove
= headNode
;while (pMove
){proPMove
= pMove
;pMove
= pMove
->right
;}proPMove
->right
= newNode
;newNode
->left
= proPMove
;
}
void printNodeData(Node
* headNode
)
{Node
* pMove
= headNode
->right
;while (pMove
){printf("%d-->", pMove
->data
);pMove
= pMove
->right
;}printf("\n");}int main()
{Node
* List
= createHeadNode();for (int i
= 0; i
< 10; i
++){headAddNode(List
, i
);}printNodeData(List
);tailNodeData(List
, 11);printNodeData(List
);return 0;
}
看了這么多了,是不是很累了,再堅(jiān)持一下,或者休息一下再來(lái)看
其實(shí)這個(gè)雙向鏈表還有別的實(shí)現(xiàn)方式–借助第二個(gè)結(jié)構(gòu)體
typedef struct List
{int size
; List
* head
; List
* tail
;
}List
此時(shí)的你經(jīng)過上面的雙向鏈表的學(xué)習(xí),有沒有一點(diǎn)想法。有沒有想實(shí)現(xiàn)雙向循環(huán)鏈表。
這時(shí)你會(huì)有靈感嗎?
如果沒有的話,那我來(lái)提醒一下你。其實(shí)這時(shí)候你只要將這個(gè)雙向鏈表的left的NULL賦為最后一個(gè)節(jié)點(diǎn)的地址,最后一個(gè)節(jié)點(diǎn)的right賦為頭節(jié)點(diǎn)的地址。這樣不就頭尾連接起來(lái)了。是不是很神奇。
那這樣有思路了,剩下的就交給你來(lái)實(shí)現(xiàn)了。代碼我就不寫了,如果有遇到什么問題可以私信我哦,有空看到了會(huì)回復(fù)的。
好了,今天就先寫到這里了,好困太晚了,先睡了。。
總結(jié)
以上是生活随笔為你收集整理的链表之双向链表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。