数据结构
巴啦啦拉粑粑
这个作者很懒,什么都没留下…
展开
-
C++实现 利用前序序列和中序序列构建二叉树
前言:已知一个二叉树的中序序列和前序序列,或者中序序列和后序序列就可以唯一确定一个二叉树(必须知道中序序列),只知道前序和后序是不能创建唯一的二叉树。1.引例已知下列某二叉树(8个结点)的两个序列,如何确定一棵唯一的二叉树呢?①前序序列的第一个结点,就是根结点②在中序序列中,找到根结点,记录根结点前的结点,即为左子树结点,图中为3(4,7,2),根结点后的结点,即为右子树结点,图中为(5...原创 2020-04-01 21:39:07 · 4511 阅读 · 3 评论 -
C++详解 二叉树的层序遍历(BFS)
上一节讲了二叉树的三种基本遍历方法:先序、中序、后续,C++详解 二叉树的三种遍历方式,这三种方法都是利用栈,DFS(深度优先遍历)的方法,那么我们最后来讲最后一种遍历方法——层序遍历,BFS(Breadth First Search)宽度优先遍历1.二叉树遍历的核心问题二叉树是二维结构。遍历二叉树,就是为了产生一个一维的线性序列,不同的遍历方法就产生不同的一维序列。访问了左结点后,如果把根结...原创 2020-04-01 14:56:17 · 1660 阅读 · 3 评论 -
C++详解 二叉树的三种遍历方式
上一篇文章,讲了二叉树的创建——C++实现 链表存储二叉树接下来讲解二叉树的三种遍历方式:先序(前序)遍历、中序遍历、后序遍历,三种方式都是DFS(Depth First Search)深度优先搜索,核心思想都是函数的递归(栈),如果你能理解上面这篇文章中创建二叉树的具体过程,那么遍历就轻而易举1.先序遍历Former_Order_Traversel(BinTree_Node* p){ ...原创 2020-03-28 18:44:02 · 4909 阅读 · 0 评论 -
C++实现 链表存储二叉树
前言:国内很多教材,讲完二叉树的结构,就直接开始讲二叉树的遍历,我就觉得很奇怪,你连个完整的二叉树都没创建,遍历什么,于是我写了下面这篇文章,详细介绍了创建过程,然后再说遍历,循序渐进1.什么是二叉树?什么是完美二叉树和完全二叉树?直接上图可以看到,图中的根结点拥有左右两个结点,同时左右两个结点,又是一棵独立的、互不相交的树,分别称为左子树、右子树,这就是二叉树名字的由来完美二叉树:又...原创 2020-03-27 20:16:00 · 2301 阅读 · 2 评论 -
C++链表(不带头结点)实现 多项式加法
开始之前,若对线性表的链式存储不了解,请看关于链表的具体讲解C++ 实现数据结构中的线性表1.如何创建一个不含头结点的链表(这一部分非常关键,而且非常有用,建议可以动手跟着画示意图,帮助理解)下面是存储多项式的单个节点的结构体代码:struct Node{ int coef;//系数 int expon;//指数 Node* next;};那么我们如何,用一个个节点构建起一...原创 2020-03-24 23:01:39 · 361 阅读 · 0 评论 -
C++ 实现线性表的顺序存储(顺序表)
关于数据结构中的 线性表(队列、栈)的相关讲解,请看[C++ 实现数据结构中的线性表](https://blog.csdn.net/weixin_43335392/article/details/104956785)1.线性表的顺序存储的结构代码typedef int ElementType;#define Maxsize 10struct Sequence{ElementType ...原创 2020-03-21 17:40:36 · 631 阅读 · 0 评论 -
C++ 实现数据结构中的线性表
建议用上面这张图,把关于线性表的知识联系起来进行学习1.什么是线性表?答:零个或多个元素组成的,有序的、有限的序列,称为线性表。注意:这里的有序是指:第一个元素前面没有元素(无前驱),最后一个元素后面没有元素(无后继),中间的元素有且只有一个前驱和后继,是一种承前启后的关系如一个数组[1,2,3,4]是一个线性表,因为他是有序的,元素个数为4的一个序列如班上的成绩表是一个线性表,因为他...原创 2020-03-19 00:56:13 · 628 阅读 · 0 评论 -
C++实现 栈的顺序存储(通过动态数组)
前面讲解了通过静态数组,实现顺序栈C++实现 栈的顺序存储(通过静态数组)那么如果我们不想使用定长的数组,转而使用动态数组又该怎么编写呢?强烈建议与上面这篇文章,对比着学习,注重二者不同的地方,这样更能深刻掌握栈的顺序存储1.栈的结构定义typedef int ElementType#define Maxsize 10;struct Sqstack{Element_type *P;...原创 2020-03-18 01:59:02 · 383 阅读 · 0 评论 -
C++实现 栈的顺序存储(通过静态数组)
1.什么是栈?答:只在表尾进行插入和删除和操作的线性表,我们把允许插入和删除的一端称为栈顶,另一端称为栈底。必须记住栈是先进后出的具体实现过程如下图:你可以想象成是叠碟子,一个个碟子往上叠,那么你拿的时候就只能从最顶上的开始拿,不然就全碎了2.栈的结构定义typedef int ElementType;#define Maxsize 10struct Sqstack{Eleme...原创 2020-03-18 00:11:49 · 359 阅读 · 0 评论 -
C++实现 线性表的链式存储(单链表)
链式存储(单链表):由多个节点串联而成,每一个节点不仅有数据信息,最重要的还存储了后继节点的地址,所以只要知道某一个节点的位置,就能遍历后续节点,结构如下图注意:若不带头结点的链表,增加了程序的复杂性和出现bug的机会,因此,通常在单链表的开始结点之前附设一个头结点。节点的组成:存储数据元素信息的域称为数据域;存储后继位置的域称为指针域,代码如下struct Node{int dat...原创 2020-02-28 23:51:21 · 600 阅读 · 0 评论