
The data structure
文章平均质量分 85
凛音Rinne
备考暂停更新,会更新考研相关
展开
-
【王道408数据结构】线性表习题
2. 顺序表逆置 3. 删除所有值为x的元素 4. 删除范围元素 5. 删除范围元素(与第四题相似) 6. 删除重复元素 7. 合并两个有序数组 8. 两个链表换位 9. 二分查找 10. [2010统考真题]循环移动 11. [2011统考真题]找两个顺序表合并的中位数 12. [2013统考真题]出现超过一半的元素 13. [2018统考真题] 数组未出现最小正整数 14. [2020统考真题]三元数组最小距离...原创 2022-06-13 14:15:36 · 830 阅读 · 2 评论 -
【数据结构】二叉树遍历
二叉树遍历 本篇针对链表类型的二叉树的遍历,数组类型的二叉树遍历就等于遍历数组 文章目录二叉树遍历一、遍历规则1. 前序遍历(Preorder Traversal)2. 中序遍历(Inorder Traversal)3. 后序遍历(Postorder Traversal)二、普通二叉树遍历1. 二叉树节点定义2. 二叉树初始化3. 测试前序中序后序遍历4. 二叉树节点个数5. 二叉树叶子节点个数6. 二叉树第k层节点个数7. 二叉树深度/高度8. 二叉树查找值为x的节点三、层序遍历1. 创建队列2. 遍原创 2021-11-12 11:57:33 · 4610 阅读 · 28 评论 -
【数据结构】堆排序
堆排序 因为大堆和小堆只能知道最大元素和最小元素 而TopK也只能找出前k个大/小的元素 这一篇,同时满足上面两个求 本篇有大量内容在前两篇文章基础上: 【数据结构】TopK问题_Rinne’s blog-优快云博客 【数据结构】堆_Rinne’s blog-优快云博客 以及很多代码的接口/函数之前写过不再重复: 堆 · 凛音Rinne - 码云 - 开源中国 (gitee.com) 文章目录堆排序一、思路1. 建小堆2. 建大堆3. 测试代码二、证明时间复杂度1. 建堆过程2.原创 2021-11-10 12:03:11 · 1103 阅读 · 26 评论 -
【数据结构】TopK问题
TopK问题 gitee上有更详尽的代码:堆 + TopK代码 文章目录TopK问题一、问题分析1. 方法一2. 方法二3. 方法三二、TopK实现1. 前k个数的小堆2. n-k个数和根去比较3. 打印堆三、测试 topk问题就是取n个数据中,找出最大/最小的前k个数 一、问题分析 1. 方法一 对n个数据进行排序,再取出前k个元素 时间复杂度:O(N * logN) 2. 方法二 将n个数据依次插入大堆,然后pop堆的根 k 次 时间复杂度:O(N + k * logN) 设有n原创 2021-11-08 23:06:12 · 1715 阅读 · 14 评论 -
【数据结构】堆
堆 文章目录堆一、堆的概念二、堆的实现1. 定义节点2. 堆的初始化3. 堆的销毁4. 堆的插入5. 堆的删除 一、堆的概念 堆是二叉树的一种特殊情况 一个堆中的所有节点的值总是不大于或不小于其父节点的值 堆是一棵完全二叉树。 堆分为大堆和小堆 大堆:根节点最大的堆叫做最大堆或大根堆 小堆:根节点最小的堆叫做最小堆或小根堆 普通的二叉树是不适合用数组来存储,因为可能会因为数据不连续而导致存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。 又因为上一篇文章中提出【数据结构】原创 2021-11-06 16:20:12 · 1439 阅读 · 24 评论 -
【数据结构】二叉树的定义以及性质
二叉树 文章目录二叉树一、树1.树的定义2. 树的概念(1) 节点的度(2) 叶节点(终端节点)(3) 分支节点(非终端节点)(4) 父节点(双亲节点)(5) 子节点(孩子节点)(6) 兄弟节点(7) 树的度(8) 节点的层次(9) 树的高度(深度)(10) 堂兄弟节点二、二叉树1. 树的表示2. 二叉树3. 二叉树的种类(1) 满二叉树(2) 完全二叉树4. 二叉树的性质 二叉树 在了解二叉树之前,专业外的人,比如我,二叉树的名称早就听说过,在了解二叉树之前,应当先去了解树的几个概念,毕竟,二叉树是普通原创 2021-11-05 19:17:59 · 1791 阅读 · 18 评论 -
【数据结构】队列
队列 笔记+源码自取: 笔记:队列笔记 源码:队列源码 一、为什么要学习队列 在排队系统中,顾客去拿自己号码顺序,先拿到的一定先被叫号。 这种先进先出FIFO(First In First Out)的模式被称为队列 队列顾名思义,排队,按顺序进入,按顺序出去 只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表 进行插入操作的一端称为队尾,进行删除操作的一端称为队头 二、队列的接口 在这种线性表的类型,可以是定义数组来实现,也可以定义链表来实现。 二者如何抉择? 因为涉及到元素移动,显原创 2021-11-01 21:08:23 · 826 阅读 · 16 评论 -
【数据结构】栈
栈 文章目录栈一、栈是什么,为什么使用栈二、栈的接口1. 初始化栈2. 进栈3. 销毁栈4. 出栈5. 找到栈顶的元素 一、栈是什么,为什么使用栈 在内存的存储中了解到压栈和出栈,这种类似的数据结构中也有 栈是限定仅在表尾进行插入或者删除操作的线性表。 栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则 图片即可解释,凡是具有LIFO特征的问题都可以运用栈的数据结构和思维来求解。 压栈:栈的插入操作叫做进栈/压栈/入栈,进入的数据在栈顶 出栈:栈的删除操作叫做出栈。删除的原创 2021-10-30 13:31:05 · 1172 阅读 · 18 评论 -
【数据结构】有头双向循环链表,多图详解,笔记和源码已上传至gitee
有头双向循环链表 ????????笔记和源码自取: ????笔记地址 ????源码地址 文章目录有头双向循环链表1. 初始化链表2. 链表尾插3. 链表头插4. 链表尾删5. 链表头删6. 链表中间插入7. 链表中间删除 最近接触了单链表,也做了很多题目,但单链表的增删查改真的很麻烦 ????又最近学习了双向链表,尤其是 有哨兵位头节点的双向循环链表 写起来和用起来真的很爽!!???? 1. 初始化链表 我们需要一个哨兵位头节点便于尾插头插 ????代码如下: //初始化链表 LTNode*原创 2021-10-29 18:32:15 · 402 阅读 · 8 评论 -
【数据结构】有无哨兵头节点的单链表,便利头插尾插,以LeetCode两道题为例
有无哨兵头节点的单链表 ❤️❤️ 笔记指路gitee:❤️:hear有无哨兵节点单链表 ❤️❤️ 欢迎 白嫖!!????????????????❤️❤️ 文章目录有无哨兵头节点的单链表一、什么是哨兵节点?二、无哨兵节点三、有哨兵节点 ????????最近在做题的过程中,遇到不同的单链表题目,在这些题目中,如果设置一个哨兵头节点可能会带来一定的便利 在之前的单链表增删查改中就发现,头插其实比尾插简单 ????????文章指路:【数据结构】单链表的增删查改,附代码+笔记gitee自取_Rinne’s bl原创 2021-10-25 20:57:06 · 290 阅读 · 11 评论 -
【数据结构】单链表的增删查改,附代码+笔记gitee自取
单链表 gitee自取: 源代码+工程文件 单链表笔记 文章目录单链表导言一、链表的概念及其结构1. 概念2. 结构特点二、单链表的增删查改1. 单链表主体2. 单链表申请节点3. 单链表打印4. 单链表尾插5. 单链表头插6. 单链表尾删7. 单链表头删8. 单链表查找9. 单链表在pos之后插入10. 单链表在pos之前插入11. 单链表在pos之后删除12. 单链表在pos位子值删除13. 销毁单链表 导言 虽然顺序表一定程度上解决了定长数组带来的空间浪费 但是在我们约定顺序表以2倍的原创 2021-10-23 22:19:47 · 618 阅读 · 8 评论 -
【数据结构】线性表与顺序表,含顺序表的各个插口代码(笔记在gitee自取)
线性表与顺序表 ????顺序表和之前的通讯录有些相似 ????通讯录源码地址:通讯录源码 ????通讯录文章:通讯录动态内存+文件操作保存 ????顺序表源码:顺序表源码 ????顺序表笔记:顺序表笔记 文章目录线性表与顺序表一、线性表二、顺序表1. 静态顺序表2. 动态顺序表2.1 定义一个动态的顺序表2.2 初始化顺序表2.3 顺序表开辟内存2.4 顺序表尾插2.5 打印顺序表2.6 顺序表头插2.7 顺序表尾删2.8 顺序表头删2.9 顺序表查找3.0 顺序表中间插入3.1 顺序表中间删除3.2原创 2021-10-17 11:37:40 · 369 阅读 · 8 评论