数据结构
学有所得
愤怒&高小一
这个作者很懒,什么都没留下…
展开
-
数据结构之图的遍历
同志们,数据结构理论部分的内容,我就为大家讲解到这了。后续的排序内容,之前是拜托翟同学写的,但发现更了一篇后就无音信了。可能是有点忙吧,我们再等等…Before尽管图的遍历和树的遍历类似,即希望从图中某一个顶点出发访遍图中的其余顶点。然而图的遍历还是比树的遍历要复杂的多。因其中任意顶点都可能和其余的顶点相邻接。所以在访问某个顶点时,可能沿着某一路径搜索后,又需回到该顶点上。为了避免同一顶点被多次访问,在遍历图的过程中,我们还需记下每个已访问过的顶点,防止重复遍历。遍历图的路径通常有两种:深度优先遍历和.原创 2020-10-18 14:56:23 · 195 阅读 · 0 评论 -
数据结构之图的存储结构
邻接矩阵我们用一个二维数组表示邻接矩阵。在这个二维数组中,我们存储各顶点之间的关系。二维数组的两个下标即为顶点的数目,若将其看成一个二维坐标系。在有向图中,我们将一个顶点到另一个顶点之间的出度所表示的坐标标示为1,无关系的则标示为0;在无向图中,我们则让两邻接点之间的边所表示的两个坐标都为1,无关系的则为0,因其有对称关系,所以难度还是可以的。由此我们可初始化图:// Status是函数的类型,其值是函数结果状态代码typedef int Status;// VertexType是顶点的.原创 2020-10-10 11:19:42 · 327 阅读 · 0 评论 -
数据结构之图
Before图(Graph)已不同于线性表和树了。它是一种更为复杂的数据结构。在线性表中,数据元素之间仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继;在树形结构中,数据元素之间有着明显的层次关系,并且每一层上的结点可能和下一层中多个结点相关,但只能和上一层中一个结点相关;而在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能有相关的联系。About:图在图中,数据元素通常被称为顶点(Vertex),同时,我们将图划分为有向图(Digraph)和无向图(Unidigrap.原创 2020-10-07 11:16:46 · 685 阅读 · 0 评论 -
数据结构之二叉树的遍历
Keep up with the previous article.链式存储结构在链式存储结构中我们能更形象地,且更易于理解的描绘二叉树。由二叉树的定义可知,二叉树的结点由一个数据元素和分别指向其左子树和右子树的两个分支构成,则表示二叉树的链表中的结点至少包含3个域:数据域和左右指针域。有时呢,为了便于查找,还可以加一个指向其双亲的指针域。利用这两种结点结构所得二叉树的存储结构分别称之为二叉链表和三叉链表。容易证得,在含有n个结点的二叉链表有n+1个空链域。由此我们可初始化一下二叉链表:// S.原创 2020-10-05 09:45:54 · 228 阅读 · 0 评论 -
数据结构之二叉树
Before:树树形结构可以说是一种很重要的非线性结构了,其中以树和二叉树最为常用。树(Tree)是具有n(n≥0)个结点的集合,在一颗非空树中,其具备有如下几个特征:有且仅有一个特定的称为**根(Root)**的结点。当n>1时,其余结点可分为m(m>0)个互不相交的有限集T₁ ,T₂ ,…, Tₘ,其中每个集合本身又是一棵树,并且称为根的子树(Sub Tree)。如下图中的T₂ ={C,G}就是根A的一个子集。因树下有树,树下还有树。可知,树的结构定义是一个递归的定义,即在.原创 2020-08-18 17:39:07 · 106 阅读 · 0 评论 -
数据结构之队列
About:队列同栈一样,队列也是一种限定性的数据结构。因其只允许一端进行元素的插入(入队列),另一端进行元素的删除(出队列),由此可知,队列是一种先进先出(first in first out)类型的线性表。我们可称这种限定性线性表为FIFO结构。同时规定,入队列的一端为队尾,出队列的一端为队头。若我们有一队列Q(a1,a2,…,an),则称a1为队头元素,an为队尾元素。队列中元素按a1,a2,…,an的次序进入,退出时也只能按此顺序退出。这种现象就像我们排队一样,但不能考虑插队现象。队列的表.原创 2020-08-16 14:56:04 · 336 阅读 · 0 评论 -
数据结构之栈
小引:栈和队列是两种重要的线性结构。从数据结构来看,虽二者同属于线性表,但因本身的操作受限,因此一般称二者为限定性的数据结构。从数据类型方面来看,二者和线性表也大不相同。那么区别在哪,我们一起来看看吧。About:栈栈是限定仅在表尾进行插入(入栈)和删除(出栈)操作的线性表。因此,对栈来说,表尾端有其特殊含义,称为栈顶,相应地,表头端称为栈底。不含元素的空表称为空栈。若我们有一个栈S(a1,a2,…,an),则可称a1为栈底元素,an为栈顶元素。因栈的修改是按后进先出(last in first .原创 2020-08-14 18:04:54 · 236 阅读 · 0 评论 -
数据结构之链式线性表
About:链式线性表链式线性表的数据存储方式不同于顺序链式表。由于它的数据元素是存储在任意的单元空间(可以连续,也可非连续),所以它的存,取数据操作就不必受“牵一发而动全身”的罪。我们将一个数据元素存储的空间称为数据域,其直接后继存储空间称为指针域,二者统称为一个结点。各结点就可连成具有**“一对一”关系的链表。因该结点只含有一个指针域,所以我们可称该链表为线性链表或单链表**。单链表的初始化在单链表中,我们用头指针指示链表中第一个结点的存储位置,由于最后一个结点已无后继,所以最后一个结点的指针为.原创 2020-08-12 17:37:00 · 596 阅读 · 0 评论 -
数据结构之顺序线性表
手上这本教材可把我整懵了,并不是纯净的 C语言。不过它的一些细节是真的让我眼前一亮。用纯 C来写的话,也还是很有意思的。About:线性表 线性表是最常用且最简单的数据结构。其特点是在非空的有限集合中,存在唯一的一个称作“第一个”和“最后一个”的数据元素,且除这两个第一之外,其它的元素均只有一个直接前驱和直接后继。由此可见一般线性表中,各数据元素之间有着一对一的关系。线性表数据元素的总个数(n)对应线性表的长度。当长度为0时,称此线性表为空表。About:顺序线性表 线性表的顺序表示.原创 2020-08-04 18:03:31 · 532 阅读 · 0 评论 -
数据结构之绪论
数据结构是本学期的专业课,我对它的重视程度不亚于上学期的 C语言。可惜疫情原因,不能在小黑板上听老师讲课了。观感大打折扣。What 我们知道在计算机中解决一个实际问题,需要进行以下几个步骤。从具体问题中抽象出一个适当的数学模型。设计一个解决此类数学模型的算法。进行编译与最后的调试。 而传统的线性方程组、微分方程等数学模型在非数值计算问题等情况中已不适用了,所以才出现以线性结构,树形结构为首的新型数学模型。所以为什么要学习数据结构呢?我觉得它更多的时候是给了我们一个解决问题的方向。B原创 2020-08-02 15:50:11 · 100 阅读 · 0 评论