![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
爱写代码的小陈
计算机小白
展开
-
数据结构学习笔记之队列。
声明:这个系列为学习极客时间的《数据结构与算法之美》的学习笔记。图大多数都是此系列文章内的图,非原创。 队列: 与栈类似,队列也是操作受限的线性表。先进者先出,这就是典型的“队列” 最常见的队列:循环队列 循环队列,顾名思义,它长得像一个环。(实际上,它会浪费一个数组空间,利于代码判断:是否为满,是否为空) 当前 head=4,tail=7。当有一个新的元素 a 入队时,我们放入下标为 7 的位置。但这个时候,我们并不把 tail 更新为 8,而是将其在环中后移一位,到下标为 0 的位置。 实现代码:原创 2020-07-21 16:04:52 · 138 阅读 · 0 评论 -
数据结构学习笔记之栈。
声明:这个系列为学习极客时间的《数据结构与算法之美》的学习笔记。图大多数都是此系列文章内的图,非原创。 栈: 实质上,栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。后进者先出,先进者后出。 复杂度分析: 不管是顺序栈还是链式栈,我们存储数据只需要一个大小为 n 的数组就够了。在入栈和出栈过程中,只需要一两个临时变量存储空间,所以空间复杂度是 O(1)。 不管是顺序栈还是链式栈,入栈、出栈只涉及栈顶个别数据的操作,所以时间复杂度都是 O(1)。 对于扩容的时间复杂度分析: 扩容如图: 对于入栈原创 2020-07-21 15:14:59 · 188 阅读 · 0 评论 -
数据结构学习笔记之链表
声明:这个系列为学习极客时间的《数据结构与算法之美》的学习笔记。图大多数都是此系列文章内的图,非原创。 链表 定义:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 下面分别讲述常见的链表: 单链表 为了将所有的结点串起来,每个链表的结点除了存储数据之外,还需要记录链上的下一个结点的地址。 链表也支持数据的查找、插入和删除操作。 插入和删除: 显然复杂度都为O(1) 有利有弊,相对数组来说。链表要想随机访问第 k 个元素,就没有数组那么高效了。复杂度原创 2020-07-21 14:34:28 · 151 阅读 · 0 评论 -
数据结构学习笔记之数组。
声明:这个系列为学习极客时间的《数据结构与算法之美》的学习笔记。图大多数都是此系列文章内的图,非原创。 数组: 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 关键字: 第一个是线性表: 性表就是数据排成像一条线一样的结构。只有前后两个方向。常见线性表数据结构:数组,链表,队列,栈。 非线性表:常见非线性表结构有:二叉树,图等。 第二个是连续的内存空间和相同类型的数据: 因此,数组有了一个特性:随机访问(就是我想访问i就访问i ,而不需要访问0到i-1。) 在原创 2020-07-21 11:10:46 · 169 阅读 · 0 评论