日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ 双向链表的建立与遍历

發(fā)布時間:2025/3/15 c/c++ 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 双向链表的建立与遍历 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

C++ 雙向鏈表的建立與遍歷

開發(fā)工具與關(guān)鍵技術(shù):C++、VisualStudio 作者:何任賢 撰寫時間:2019年05月20日 鏈表是以struct或class數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ)的動態(tài)數(shù)據(jù)結(jié)構(gòu),它的存儲方式是以節(jié)點(diǎn)形式存儲,節(jié)點(diǎn)分為兩部分,一部分是數(shù)據(jù),另一部分是用于指向下一個節(jié)點(diǎn)的指針,鏈表有三種形式分別是單鏈表、雙鏈表和環(huán)鏈表。 雙鏈表的雙指的是雙向,意思是該鏈表的節(jié)點(diǎn)的指針部分有兩個指針,一個指向下一個節(jié)點(diǎn),一個指向上一個節(jié)點(diǎn)。

下面是代碼和結(jié)果截圖:
#include
using namespace std;
class tast
{
public:
tast * next = NULL;
tast * last = NULL;
int a = 0;
};
void head_establish(tast *& head, tast *&end)
{
tast *x;
for (int i = 0; i < 5; i++)
{
x = new tast;
x->a = i;
x->last = NULL;
x->next = NULL;
if (head != NULL)
{
tast *y = end;
end = x;
y->next = end;
end->last = y;
}
else
{
head = x;
end = x;
}
x = NULL;
}
}
void head_out(tast *&head)
{
tast *x = head;
while (x != NULL)
{
cout << x->a << " ";
x = x->next;
}
cout << “\n”;
}
void last_out(tast *&end)
{
tast *x = end;
while (x != NULL)
{
cout << x->a << " ";
x = x->last;
}
cout << “\n”;
}
void main()
{
tast head = NULL , end = NULL;
cout << “從頭建立的:” << “\n”;
head_establish(head, end);
cout << “正向遍歷:” << “\n”;
head_out(head);
cout << “反向遍歷:” << “\n”;
last_out(end);
}

head_establish()函數(shù)是從頭節(jié)點(diǎn)開始創(chuàng)建的鏈表,雙向鏈表的創(chuàng)建和其他鏈表不一樣,第一比其他鏈表多了兩個指針用于指向最后一個節(jié)點(diǎn)和上一個節(jié)點(diǎn),head是頭指針意思指向第一個節(jié)點(diǎn)的指針,end是尾指針意思是指向最后一個節(jié)點(diǎn)的指針,那么正向遍歷的意思就是從頭節(jié)點(diǎn)開始遍歷的意思,反向遍歷的意思是從尾節(jié)點(diǎn)開始遍歷的意思,雙向鏈表也可以從尾節(jié)點(diǎn)開始創(chuàng)建,方式和head_establish()函數(shù)差不多只要把head和last交換位置就行。
下面是雙向鏈表的示意圖

總結(jié)

以上是生活随笔為你收集整理的C++ 双向链表的建立与遍历的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。