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++ 双向链表的建立与遍历相关推荐

  1. c语言数组指定位置插入和删除_玩转C语言链表,单链表/双向链表的建立/遍历/插入/删除...

    最近临近期末的C语言课程设计比平时练习作业一下难了不止一个档次,第一次接触到了C语言的框架开发,了解了View(界面层).Service(业务逻辑层).Persistence(持久化层)的分离和耦合, ...

  2. C++单链表的建立和遍历

    C++单链表的建立和遍历 开发工具与关键技术:C++.VisualStudio 作者:何任贤 撰写时间:2019年05月10日 链表是以struct或class数据结构为基础的动态数据结构,它的存储方 ...

  3. 二叉树的建立和遍历算法 - 数据结构和算法47

    二叉树的建立和遍历算法 让编程改变世界 Change the world by program   有童鞋会说,我们上节课研究这么多遍历的方法干啥呢?聪明的鱼油们怎么看?! 对于二叉树,思路方面我们已 ...

  4. 小朋友学数据结构(3):二叉树的建立和遍历

    小朋友学数据结构(3):二叉树的建立和遍历 一.基本概念 BinaryTree.png 二叉树:每个结点的子结点个数不大于2的树,叫做二叉树. 根结点:最顶部的那个结点叫做根结点,根结点是所有子结点的 ...

  5. C语言二叉树实验报告流程图,二叉树的建立与遍历实验报告(c语言编写,附源代码).doc...

    二叉树的建立与遍历实验报告(c语言编写,附源代码).doc 第 1 页,共 9 页二叉树的建立与遍历实验报告级 班 年 月 日 姓名 学号_ 1实验题目建立一棵二叉树,并对其进行遍历(先序.中序.后序 ...

  6. 二叉树的建立与遍历(数据结构)

    之前上数据结构时,只是上课听听,没咋在课下实现,现在大二都快结束了,经过几波的ACM竞赛,感觉数据结构太重要了,带着兴趣和欲望重新学一下数据结构中的基础操作 我用的是先序次序输入二叉树中节点建立的二叉 ...

  7. 二叉树的遍历实验报告C语言,二叉树的建立与遍历实验报告(c语言编写,附源代码)...

    程序用VC编写,实现建立一棵二叉树的功能,并对其进行遍历(先序.中序.后序),并且打印输出遍历结果. 二叉树的建立与遍历实验报告 级 班 年 月 日 姓名 学号_ 1.实验题目 建立一棵二叉树,并对其 ...

  8. 无向图java_Java实现无向图的建立与遍历

    一.基于邻接矩阵表示法的无向图 邻接矩阵是一种利用一维数组记录点集信息.二维数组记录边集信息来表示图的表示法,因此我们可以将图抽象成一个类,点集信息和边集信息抽象成类的属性,就可以在Java中描述出来 ...

  9. 数据结构——二叉树的建立与遍历算法(实验报告)

    实验名称:二叉树的建立与遍历算法          指导教师: 实验日期:2022年月日 实验地点: 成绩: 实验目的: 1.掌握二叉树的定义. 2.二叉树的链式存储结构及在链式存储结构中三种遍历(前 ...

最新文章

  1. 【OpenCV 4开发详解】Canny算法
  2. 轻松搞定个人虚拟桌面部署之1-远程桌面服务概述
  3. hyperterminal使用教程_如何在Win7中安装使用超级终端Hyper Terminal(转)
  4. Linux常用命令(第二版) --网络通信命令
  5. 多链路负载均衡及冗余
  6. Python2.5.4移植到arm-linux
  7. LSH︱python实现局部敏感随机投影森林——LSHForest/sklearn(一)
  8. Java自定义拦截器详细教程
  9. Github上的一些优秀的知识图谱项目*
  10. 词类与句子成分对应关系 —— 状语篇
  11. UNITER: UNiversal Image-TExt Representation Learning
  12. t分布的定义和概率密度函数
  13. 人工智能实验--汉诺塔规约图(四个盘子)
  14. mac 无法打开“XXXXXXX.app”,因为无法确认开发者的身份。
  15. 牛客网js获取单行,多行输入
  16. html position与z-index定位学习
  17. IIS应用程序池高级设置各参数详解
  18. linux下DNS配置及域名解析服务
  19. 时间-判断两个时间相差多少天
  20. 手动实现SSR渲染和实践总结

热门文章

  1. django----admin
  2. c3p0、dbcp、druid三大连接池对比
  3. java使用MD5加密
  4. NServiceBus教程-消息传递与处理
  5. hdu2964-Prime Bases
  6. Prism4文档翻译(第四章 第二部分)
  7. 阐述Linux动态库的显式调用
  8. spring_整体系统
  9. TMS320C6678上电配置和FPGA复位DSP
  10. leetcode_zigzag conversion