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交换位置就行。
下面是双向链表的示意图

在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值