
数据结构专栏
文章平均质量分 86
数据结构相关知识
Yan. yan.好好学习
好好学习
展开
-
排序方法——《归并排序》
P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。原创 2024-06-20 20:38:48 · 967 阅读 · 0 评论 -
排序方法——《插入排序》和《希尔排序》
P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。原创 2024-06-12 22:07:11 · 1015 阅读 · 0 评论 -
排序方法——《快速排序》
快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。快速排序分为两种:递归法非递归递归法又分为三种:hoare法双指针法挖坑法快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫快速排序时间复杂度:O(N*logN)空间复杂度:O(logN)原创 2024-06-11 17:09:25 · 675 阅读 · 0 评论 -
排序方法——《选择排序》
P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。原创 2024-06-05 21:12:15 · 598 阅读 · 0 评论 -
排序方法——《冒泡排序》
P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。@[TOC]原创 2024-06-05 19:54:42 · 339 阅读 · 0 评论 -
二叉树链式结构的前序、中序、后序、层序遍历
设二叉树的根结点所在层数为1,层序遍历就是从所在二叉树的根结点出发,首先访问第一层的树根结点,然后从左到右访问第2层上的结点,接着是第三层的结点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。他的实现需要用到队列的实现,队列的相关代码在前的博客中已经详细的介绍过了,所以这里我们直接运用。后序遍历**(Postorder Traversal)——访问根结点的操作发生在遍历其左右子树之后。实现二叉树的遍历,我们要先手搓出一个二叉树,在次基础上实现二叉树的前序、中序、后序、层序遍历。原创 2024-06-01 17:24:08 · 761 阅读 · 0 评论 -
排序方法——堆排序
以上是向上调整建堆的全过程,最终得到数组arr[ ] = {10, 8, 9, 4, 7, 5, 6, 1, 3, 2}。这里将arr[0]与arr[end]交换,再进行向下调整,遍历整个数组,结束后数组变为有序数组,堆排序也就完成了。假设有一个数组:arr[ ] = {2, 8, 9, 4, 7, 5, 6, 1, 3, 10}每一次循环结束后,end–, 继续将arr[0]与arr[end]交换,继续进行同样的排序。以上是一次循环的过程,后面的循环同理,最后就会的到一组有序的数组。原创 2024-06-01 14:07:26 · 508 阅读 · 0 评论 -
对列的实现(单链表)
后面的每个函数都要传两个参数,并且是二级指针,这样太麻烦了而且容易出错,所以可以将头节点,尾节点分装成一个结构体,来表示整个队列的信息,并且可以额外加入一个变量 size 来记录队列中的数据个数。创建完节点以后,我们要考虑到传参问题,如果需要实现队列的功能,“先进先出”,那么就需要用两个指针来分别标记头节点和尾节点。在以后使用的时候,我们可能会在链表中存取其他类型的变量,所以将链表中的int类型也进行重命名操作,方便以后得更改。运用链表,我们要先创建一个结构体变量,对其进项重命名操作,方便我们后面的使用。原创 2024-05-15 17:07:28 · 723 阅读 · 1 评论 -
“ 树 ” 的概念
通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址。树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。:若一个结点含有子结点,则这个结点称为其子结点的父结点;:以某结点为根的子树中任一结点都称为该结点的子孙。:一个结点含有的子树的根结点称为该结点的子结点;具有相同父结点的结点互称为兄弟结点;:一个结点含有的子树的个数称为该结点的度;:从根开始定义起,根为第1层,根的子结点为第2层,以此类推;原创 2024-05-14 17:57:45 · 969 阅读 · 3 评论 -
栈的创建(顺序表)
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。通俗一点的理解就是,栈就像是一个羽毛球筒一样,先放进去的羽毛球,最后才能拿出来,反而后放进去的可以先拿出来,也就是我们上面提到的LIFO:Last In First Out。原创 2024-05-09 16:28:25 · 892 阅读 · 0 评论