数据结构
文章平均质量分 80
数据结构学习
sushang~
不积跬步,无以至千里;不积小流,无以成江海。
展开
-
初阶数据结构-常见的排序算法
排序排序的概念常见的排序算法常见排序算法的实现数组的打印插入排序直接插入排序的实现希尔排序( 缩小增量排序 )希尔排序的实现交换排序冒泡排序冒泡排序的实现选择排序选择排序的实现堆排序堆排序的实现快速排序快速排序非递归归并排序归并排序的递归实现归并排序的非递归实现计数排序计数排序的实现排序算法复杂度及稳定性分析排序算法的测试主函数排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过原创 2023-10-16 15:19:07 · 627 阅读 · 2 评论 -
初阶数据结构-二叉树
将节点1的左指针链接节点2,节点1的右指针链接节点4,节点2的左指针链接节点3,节点4的左指针链接节点5,节点4的右指针链接节点6,最后返回节点1的指针。如果根为空,则返回0,如果左子树为空且右子树为空,则返回1,最后统计左子树的叶子节点个数+右子树的叶子节点个数。如果根为空,则返回0,如果是第一层,返回1,最后返回左子树的第k-1层+右子树的第k-1层。如果根为空,则返回0,如果是第一层,返回1,最后返回左子树的第k-1层+右子树的第k-1层。先访问根节点的数据,再访问左子树,再访问右子树。原创 2023-10-11 15:15:08 · 113 阅读 · 0 评论 -
初阶数据结构-二叉树的概念及堆
将父亲的位置赋值给孩子,再重新计算新赋值孩子的父亲,直到完成小堆的构建。将孩子的位置赋值给父亲,再重新计算新赋值父亲的孩子,直到完成小堆的构建。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。:若一个节点含有子节点,则这个节点称为其子节点的父节点;:以某节点为根的子树中任一节点都称为该节点的子孙。:一个节点含有的子树的根节点称为该节点的子节点;:具有相同父节点的节点互称为兄弟节点;:一个节点含有的子树的个数称为该节点的度;:从根开始定义起,根为第1层,根的子节点为第2层,以此类推;原创 2023-10-09 22:26:20 · 141 阅读 · 0 评论 -
初阶数据结构-队列
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头。如果只有一个节点,将头指针phead和尾指针置空,如果是多个节点,将phead指向的位置释放,再将phead指针指向next,最后再将size–队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。原创 2023-10-08 16:29:59 · 125 阅读 · 0 评论 -
初阶数据结构-栈
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。将指针a置空,栈顶top赋值为0,用来指向栈顶数据的下一个位置,数据容量capacity置0。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。将x放入栈顶的位置,再将栈顶的位置++原创 2023-10-08 15:32:13 · 43 阅读 · 0 评论 -
初阶数据结构-双向链表
将newnode的next指针指向phead的next,将phead的next指针指向newnode,将phead的next指针指向newnode,将newnode的prev指针指向phead。将tail的next指针指向newnode,将newnode的prev指针指向tail,将newnode的next指针指向phead,最后将phead的prev指针指向newnode。将phead的next指针指向next的next,将phead的next的prev指针指向phead,释放next指针。原创 2023-10-08 13:56:21 · 122 阅读 · 0 评论 -
初阶数据结构-单链表
在pos位置之前插入,查找prev的next是否为pos,将prev的next指针指向newnode,再将newnode的next指针指向pos。先查找prev的next是否为空,再将prev的next指针指向pos的next,再释放pos指针。首先需要找到tail的next指针为空的位置,再将新创建的节点的位置放到tail中next指针中。将newnode的next指针指向pos的next,再将pos的next指针指向newnode。1. 单向或者双向2. 带头或者不带头3. 循环或者非循环。原创 2023-10-07 20:55:47 · 154 阅读 · 0 评论 -
初阶数据结构-顺序表
静态顺序表只适用于确定知道需要存多少数据的场景。静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用。所以现实中基本都是使用动态顺序表,根据需要动态的分配空间大小,所以下面我们实现动态顺序表。顺序表一般可以分为:1. 静态顺序表:使用定长数组存储元素。2. 动态顺序表:使用动态开辟的数组存储。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。找到返回下标,没有找到返回-1。上完成数据的增删查改。原创 2023-09-09 13:31:55 · 112 阅读 · 0 评论