
数据结构
文章平均质量分 76
To-String
Programming changes the world
展开
-
大话数据结构 —— 顺序表 C#、C++代码实现
线性结构定义:线性表是一个线性结构,它是一个含有n≥0个结点的有限序列,对于其中的结点,有且仅有一个开始结点没有前驱但有一个后继结点,有且仅有一个终端结点没有后继但有一个前驱结点,其它的结点都有且仅有一个前驱和一个后继结点。线性表是最常用且简单的一种数据结构。 一个线性表是n个数据元素的有限序列。 线性表中的数据元素可以是各种各样的,但同一线性表中的元素必定具有相同特性。 在复...原创 2018-10-24 15:36:26 · 988 阅读 · 0 评论 -
《大话数据结构》—— “ 树、森林 与 二叉树的转换”
树转换为 二叉树将树转换成二叉树的步骤是:加线。在所有的兄弟结点之间加一条线。 去线。对于树中的每个结点,只保留它与第一个孩子结点的连线,删除该结点其他孩子结点之间的连线。 调整。以树的根结点为轴心,将整个树顺时针旋转一定的角度(该结点的第一个孩子是该结点的左孩子,左孩子的兄弟是该结点的右孩子 )森林转换为二叉树森林是由若干棵树组成,可以将森林中的每棵树的根结点看作...原创 2019-06-16 14:31:31 · 373 阅读 · 0 评论 -
大话数据结构 —— 双向链表 C#、C++代码实现
双向列表双向链表是每个结点除后继指针外还有一个前驱指针。和单链表类同,双向链表也有带头结点结构和不带头结点结构两种,带头结点的双向链表更为常用;另外,双向链表也可以有循环和非循环两种结构,循环结构的双向链表更为常用。双向链表相当于两个单向循环链表,双链表节点结构如下图示:双链表节点比单链表多一个前驱指针域。如下图是带头结点的双向循环链表的图示结构。双向循环链...原创 2019-06-07 11:57:50 · 580 阅读 · 0 评论 -
大话数据结构 —— 单循环链表 C#、C++代码实现
单循环链表单向循环链表是单链表的另一种形式,其结构特点是链表中最后一个结点的指针不再是结束标记,而是指向整个链表的第一个结点,从而使单链表形成一个环。和单链表相比,循环单链表的长处是从链尾到链头比较方便。当要处理的数据元素序列具有环型结构特点时,适合于采用循环单链表。单循环链表的初始化操作:示意图 非空表示意图:假如终端结点用尾指...原创 2019-06-07 11:52:42 · 545 阅读 · 0 评论 -
大话数据结构 —— 单链表 C#、C++代码实现
单链表线性表的链式存储结构的特点:是用一组任意的存储单元来存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的 。我们把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域。 指针域中存储的信息称做指针或链。 这两部分组成数据元素ai 的存储映像,称为结点。头指针 :就是链表中的第一个结点的存储位置叫做头指针,那么整个链表的存取就必须是...原创 2019-06-07 11:48:05 · 686 阅读 · 0 评论 -
《大话数据结构9》—— “二叉树的顺序存储结构”——C++、C# 代码实现
顺序存储结构:二叉树的顺序存储结构就是用一维数组存储二叉树中的结点,并且结点的存储位置,也就是数组的下标要能体现结点之间的关秀,比如双亲与孩子的关系,左右结点的兄弟关系。完全二叉树:完全二叉树由于其结构上的特点,通常采用顺序存储方式存储。一棵有n个结点的完全二叉树的所有结点从1到n编号,就得到结点的一个线性系列。如下图:完全二叉树除最下面一层外,各层都被结点充满了,每...原创 2018-11-18 16:06:57 · 1426 阅读 · 3 评论 -
《大话数据结构》—— “ 二叉树的遍历”
二叉树的遍历是指从根节点出发, 按照某种次序依次访问二叉树中所有结点, 使得每个结点被访问一次且仅被访问一次。二叉树的遍历方式很多,如果我们限制了从左到右的习惯方式,那么主要就分为四种:(1 )前序遍历规则是: 若二叉树为空,则空操作返回。 否则先访问根结点——然后前序遍历左子树; 当无法移动时,—— 在前序遍历右子树。(2)中序遍历规则是: 若二叉树...原创 2018-11-14 16:07:50 · 1489 阅读 · 2 评论 -
《大话数据结构6》—— “树的定义和基本概念”
定义● 树(Tree)是n(n≥0)个结点的有限集T,并且当n>0时满足下列条件: (1)有且仅有一个特定的称为根(Root)的结点; (2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,....,Tm, 其中每一个集合本身又是一棵树,并且称为根的子树(SubTree)。 特别地,不含任何结点(即n=0)的树,称为空...原创 2018-11-12 17:56:41 · 325 阅读 · 0 评论 -
《大话数据结构7》—— “二叉树的定义和性质以及特殊二叉树”
二叉树的定义二叉树(BinaryTree)是n(n>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。如图就是一棵二叉树 二叉树的特点(1)每个结点最多有两棵子树,所以二叉树中不存在...原创 2018-11-13 20:57:11 · 234 阅读 · 0 评论 -
《大话数据结构》中缀表达式转换为后缀表达式
中缀表达式转换为后缀表达式一、表达式的三种形式:● 中缀表达式:运算符放在两个运算对象中间,如:(2+1)*3。我们从小做数学题时,一直使用的就是中缀表达式。● 后缀表达式:不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则),如:2 1 + 3 *。又比如3+(6-4/2)*5=23的后缀表达式为:3642...原创 2018-11-02 16:10:17 · 453 阅读 · 0 评论 -
《大话数据结构》—— 队列的顺序存储结构 (循环队列)—— C++、C# 代码实现
队列队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其另一端进行删除操作。队列中允许进行插入操作的一端称为队尾,允许进行删除操作的一端称为队头。队列的插入操作通常称作入队列,队列的删除操作通常称作出队列。下图是一个依次向队列...原创 2018-11-04 14:26:15 · 1034 阅读 · 0 评论 -
《大话数据结构》—— 队列的链式存储结构 —— C++、C# 代码实现
目录链队列循环队列和链式队列的比较链队列实现队列的最好的方式就是使用单链表来实现,队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已——称为链队列。那为了操作方便,头指针指向头结点,队尾指针指向终端节点,即最后一个结点元素。设队首、队尾指针front和rear,front指向头结点,rear指向队尾队列为空时,front 和 real 都指向头结...原创 2018-11-06 14:38:38 · 519 阅读 · 0 评论 -
《大话数据结构》——“顺序栈、两栈共享空间(双向栈)、链栈 ”C++ 、 C#代码实现
目录顺序栈栈的顺序存储结构两栈共享空间(双向栈)链栈时间复杂度对比顺序栈堆栈的基本概念:堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除操作。栈(Stack): 是限定仅在表尾进行插入和删除操作的线性表。所谓的表尾是指栈顶,而不是栈底。...原创 2018-10-30 15:31:41 · 1520 阅读 · 0 评论