极客时间数据结构算法
DEEP_SK
嵌入式学习者
展开
-
8 栈:如何实现游览器的前进后退
1、什么是栈a、后进者先出,先进者后出。b、从栈的操作特性来看,是一种操作受限的线性表,只允许在端插入和删除数据。2、为什么需要栈?a、栈是一种操作受限的数据结构,其操作特性用数组和链表均可实现。b、但任何数据结构都是对特定应用场景的抽象,数组和链表虽然使用起来更加灵活,但却暴露了几乎所有的操作,难免会引发错误操作风险。c、当某个数据集合只涉及在某端插入和删除数据,且满足后进者先出,先...原创 2019-10-18 15:24:57 · 140 阅读 · 0 评论 -
7链表:如何轻松写出正确的链表代码
1、理解指针或引用的含义1)含义:将某个变量(对象)赋值给指针(引用),实际上就是将这个变量(对象)的地址赋值给指针(引用)。2)示例:p—>next = q; 表示p节点的后继指针存储了q节点的内存地址。p—>next = p—>next—>next; 表示p节点的后继指针存储了p节点的下下个节点的内存地址。2、警惕指针丢失和内存泄漏(单链表)1)插入节点在...原创 2019-10-18 15:04:02 · 231 阅读 · 0 评论 -
6 链表:如何实现LRU缓存淘汰算法
1、什么是链表1)和数组一样,链表也是一种线性表。2)从内存结构看,链表的内存结构是不连续的内存空间,是将一组零散的内存块串联起来,从而进行数据存储的数据结构。3)链表中的每一个内存块被称为节点Node。节点除了存储数据外,还需记录链上下一个节点的地址,即后继指针next。2、为什么使用链表?链表特点1)插入、删除数据效率高O(1)只需更改指针指向即可,随机访问效率低O(n)级别,需要从...原创 2019-10-18 14:36:36 · 104 阅读 · 0 评论 -
05 数组:为什么很多编程语言中数组从0开始编号
数组看起来简单基础,但是很多人没有理解这个数据结构的精髓。1、数组如何实现随机访问①数组是一种线性数据结构,用连续的存储空间存储相同类型数据线性表:数组、链表、队列、栈 非线性表:树、图连续的内存空间、相同的数据,所以数组可以随机访问,但对数组进行删除插入,为了保证数组的连续性,就要做大量的数据搬移操作。a)数组如何实现下标随机访问:引入数组在内存中的分配图,得出寻...原创 2019-10-18 13:48:27 · 118 阅读 · 0 评论