C++ 双向链表的建立与遍历
C++ 雙向鏈表的建立與遍歷
開發工具與關鍵技術:C++、VisualStudio 作者:何任賢 撰寫時間:2019年05月20日 鏈表是以struct或class數據結構為基礎的動態數據結構,它的存儲方式是以節點形式存儲,節點分為兩部分,一部分是數據,另一部分是用于指向下一個節點的指針,鏈表有三種形式分別是單鏈表、雙鏈表和環鏈表。 雙鏈表的雙指的是雙向,意思是該鏈表的節點的指針部分有兩個指針,一個指向下一個節點,一個指向上一個節點。下面是代碼和結果截圖:
#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()函數是從頭節點開始創建的鏈表,雙向鏈表的創建和其他鏈表不一樣,第一比其他鏈表多了兩個指針用于指向最后一個節點和上一個節點,head是頭指針意思指向第一個節點的指針,end是尾指針意思是指向最后一個節點的指針,那么正向遍歷的意思就是從頭節點開始遍歷的意思,反向遍歷的意思是從尾節點開始遍歷的意思,雙向鏈表也可以從尾節點開始創建,方式和head_establish()函數差不多只要把head和last交換位置就行。
下面是雙向鏈表的示意圖
總結
以上是生活随笔為你收集整理的C++ 双向链表的建立与遍历的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++单链表的建立和遍历
- 下一篇: 产品经理和开发打起来了