随笔分类 -  数据结构

摘要:1. 树的基本概念 树与链表,栈和队列不同, 是一种非线性的数据结构, 它由n (n>=0) 个有限结点组成一个具有层次关系的集合 把它叫做树,是因为存储在内存中的数据, 在逻辑上呈现一种树的形态, 只是根在上,叶在下 其次, 每一棵树都可以分为根(根结点)和子树(子节点), 子树又可以分为根和子树 阅读全文
posted @ 2023-05-24 11:37 许木101 阅读(31) 评论(0) 推荐(0) 编辑
摘要:设计循环队列 题目链接 思路 这道题如果用循环链表会有很多问题, 如图下 下面首先说一下用数组实现循环队列的结构 然后用这个结构实现入队, 出队, 判空, 判满操作操作, 如图下 下面代码实现 typedef struct { int* dys; int front; int rear; int k 阅读全文
posted @ 2023-04-14 10:46 许木101 阅读(10) 评论(0) 推荐(0) 编辑
摘要:用两个栈实现队列 题目链接 思路 首先, 梳理下栈和队列的概念, 如下图 栈中所有数据遵循后入先出, 而队列是先入先出 然后, 理解用两个栈模拟出的队列结构 最后思考如何用模拟出的队列实现入队, 出队, 取队头数据和判空操作, 这里说一下我的思路 入队: 入pushst栈 出队: 将pushst栈中 阅读全文
posted @ 2023-04-13 12:03 许木101 阅读(19) 评论(0) 推荐(0) 编辑
摘要:用两个队列实现一个栈 题目链接 题目描述 解题思路 首先梳理下队列和栈的概念, 队列是所有数据先入先出, 而栈是后入先出 第二步, 用两个队列结构模拟出一个栈结构 第三步,思考如何用模拟出来的栈,完成入栈, 出栈, 取栈顶数据和判空操作,这里说一下我的思路 入栈: 入不为空的队列, 如果两个队列都为 阅读全文
posted @ 2023-04-12 13:00 许木101 阅读(12) 评论(0) 推荐(0) 编辑
摘要:1. 队列概念和结构 队列与栈类似是一种特殊的线性表, 其只允许在一端删除数据, 在另外一端插入数据 删除数据的一端叫做队头, 插入数据的一端叫做队尾 删除与插入操作在队列中, 叫做出队和入队, 如下图 其次, 队列中的所有数据都遵守先进先出原则 比如要将1移出队列, 必须首先将数据0先出队列, 才 阅读全文
posted @ 2023-04-12 08:42 许木101 阅读(58) 评论(0) 推荐(0) 编辑
摘要:1. 栈的概念及结构 栈是一种特殊的线性结构, 只允许在固定的一端插入或者删除数据, 其固定的一端叫做栈顶, 另一端叫做栈底 插入删除数据操作在栈中,叫做入栈和出栈 栈中的数据元素遵守后进先出原则 2. 栈的实现 栈可以用数组或者链表,但是相较而言, 栈更适合用数组实现, 如下图 dys指向动态开辟 阅读全文
posted @ 2023-04-11 09:25 许木101 阅读(35) 评论(0) 推荐(0) 编辑
摘要:1. 顺序表的缺陷 1. 在顺序表头部中间插入数据,需要挪动数据效率低下 2. 容量不够时需要扩容,所以可能存在空间浪费 链表可以很好的解决这些问题,下面讲解链表 2. 链表概念及基本结构 链表是一种逻辑上连续,物理内存空间非连续存储的线性结构 typedef int SLDataType; typ 阅读全文
posted @ 2023-04-10 17:15 许木101 阅读(53) 评论(0) 推荐(0) 编辑
摘要:1. 顺序表概念和结构 顺序表是用一段物理地址连续的内存空间存储数据的线性结构,然后用这段空间来管理(增删改查) 数据 2. 顺序表的实现 定义顺序表结构及接口 #include <stdio.h> #include <assert.h> #include <stdlib.h> typedef in 阅读全文
posted @ 2023-04-06 18:39 许木101 阅读(29) 评论(0) 推荐(0) 编辑
摘要:1. 复杂度概念 衡量一个算法的效率一般从时间和空间的角度 时间指一个算法执行所需要的时间,空间指执行算法所需要额外的空间, 在计算机科学中叫作时间和空间复杂度 2. 时间复杂度的计算 在复杂度概念中,写到时间复杂度指一个算法执行所需要的时间 那么,计算时间复杂度就是计算一个描述算法的程序,从编译链 阅读全文
posted @ 2023-04-06 09:53 许木101 阅读(38) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示