初阶数据结构
文章平均质量分 90
学习初阶数据结构的博客。
学习本专栏同时可以学习“初阶数据结构题目”专栏。
学完本专栏后可以学习“C++学习2”或“Linux”专栏。
如果上述专栏还没有,就是还在写,快了,快了。
流星白龙
https://gitee.com/yudukai(Gitee链接)
展开
-
【初阶数据结构】11.排序(2)
年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。首先从右向左找出比基准小的数据,找到后立即放入左边坑中,当前位置变为新的坑,然后从左向右找出比基准大的数据,找到后立即放入右边坑中,当前位置变为新的坑,结束循环后将最开始存储的分界值放入当前的坑中,返回当前坑下标(即分界值下标)原创 2024-07-31 15:58:21 · 947 阅读 · 14 评论 -
【初阶数据结构】10.排序(1)
直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。),把待排序文件所有记录分成各组,所有的距离相等的记录分在同一组内,并对每一组内的记录进行排序,然后。排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。插入,原来位置上的元素顺序后移。原创 2024-07-29 21:43:31 · 1330 阅读 · 6 评论 -
【初阶数据结构】9.二叉树(4)
根据二叉树的性质,完成以下选择题:(答案在后面)链式二叉树遍历选择题:(答案在后面)两棵树都为空树------相同的树。其一为空树------不是相同的树。个叶节点,则这个二叉树的边数是。个节点,所以边数等于。因为767是奇数,2n。:所有节点加起来2n。-1也为偶数,所以n。原创 2024-07-27 03:29:18 · 1581 阅读 · 6 评论 -
【初阶数据结构】8.二叉树(3)
设二叉树的根结点所在层数为1,层序遍历就是从所在二叉树的根结点出发,首先访问第一层的树根结点,然后从左到右访问第2层上的结点,接着是第三层的结点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历.根结点的左子树和右子树分别又是由子树结点、子树结点的左子树、子树结点的右子树组成的,因此二叉树定义是递归式的,后序链式二叉树的操作中基本都是按照该概念实现的。回顾二叉树的概念,二叉树分为空树和非空二叉树,非空二叉树由根结点、根结点的左子树、根结点的右子树组成的。访问顺序为:根结点、左子树、右子树。原创 2024-07-26 03:04:39 · 1138 阅读 · 4 评论 -
【初阶数据结构】7.二叉树(2)
一般堆使用顺序结构的数组来存储数据,堆是一种特殊的二叉树,具有二叉树的特性的同时,还具备其他的特性。原创 2024-07-25 10:12:30 · 1310 阅读 · 3 评论 -
【初阶数据结构】6.二叉树(1)
对于深度为 K 的,有 n 个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从 1 至 n 的结点一一对应时称之为完全二叉树。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。在树形结构中,我们最常用的就是二叉树,一棵二叉树是结点的一个有限集合,该集合由一个根结点加上两棵别称为左子树和右子树的二叉树组成或者为空。:一个结点含有的子树的根结点称为该结点的子结点;原创 2024-07-23 00:52:51 · 1114 阅读 · 1 评论 -
【初阶数据结构】5.栈和队列
一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。概念:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。实际中还有一种特殊的队列叫循环队列,环形队列首尾相连成环,环形队列可以使用数组实现,也可以使用循环链表实现。原创 2024-07-20 22:12:21 · 1662 阅读 · 0 评论 -
【初级数据结构】4.双向链表
注意:这里的“带头”跟前面我们说的“头结点”是两个概念,实际前面的在单链表阶段称呼不严谨,但是为了同学们更好的理解就直接称为单链表的头结点。带头链表里的头结点,实际为“哨兵位”,哨兵位结点不存储任何有效元素,只是站在这里“放哨的”,也就是占位子的。表述的头节点,只是为了表示这是链表的第一个结点,并不是真的哨兵位,因为里面是存储数据的。双向链表结构相较于单链表来说要复杂一些,但是接口的实现上要比单链表简单很多。双向链表的节点结构:数据+指向后一个节点的指针+指向前一个结点的指针。哨兵位节点才是真正的头节点。原创 2024-07-18 03:51:40 · 905 阅读 · 0 评论 -
【初阶数据结构】3.单链表
虽然已经证明了快指针不论走多少步都可以满足在带环链表中相遇,但是在编写代码的时候会有额外的步骤引入,涉及到快慢指针的算法题中通常习惯使用慢指针走一步快指针走两步的方式。让一个指针从链表起始位置开始遍历链表,同时让一个指针从判环时相遇点的位置开始绕环运行,两个指针都是每次均走一步,最终肯定会在入口点的位置相遇。快慢指针,即慢指针一次走一步,快指针一次走两步,两个指针从链表起始位置开始运行,如果链表带环则一定会在环中相遇,否则快指针率先走到链表的未尾。,接下来的追逐过程中,每追击一次,他们之间的距离缩小1步。原创 2024-07-17 01:31:38 · 1124 阅读 · 0 评论 -
【初阶数据结构】2.顺序表
但是在物理结构上并不一定是连续的, 线性表在物理上存储时,通常以数组和链式结构的形式存储。增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们 再继续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。因为增容的操作本身就有一定的程序性能的消耗,若频繁的增容会导致程序效率低下。顺序表的底层结构是数组,对数组的封装,实现了常用的增删改查等接口。的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。增容需要申请新空间,拷贝数据,释放旧空间。原创 2024-07-11 19:32:32 · 1277 阅读 · 0 评论 -
【初阶数据结构】1.算法复杂度
数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。没有一种单一的数据结构对所有用途都有用,所以我们要学各式各样的数据结构。如:线性表、树、图、哈希等。原创 2024-07-10 03:16:44 · 1041 阅读 · 1 评论