数据结构
敲代码的CHENG城
熬过几个无人知晓的秋冬春夏,撑过去,一切都会顺着你想要的方向走...
展开
-
数据结构与算法-为什么数组从0开始
极客学习笔记 从数组存储的内存模型上来看,“下标”最确切的定义应该是“偏移(offset)”。前面也讲到,如果用 a 来表示数组的首地址,a[0] 就是偏移为 0 的位置,也就是首地址,a[k] 就表示偏移 k 个 type_size 的位置,所以计算 a[k] 的内存地址只需要用这个公式: a[k]_address = base_address + (k-1)*type_size 但是,如果...原创 2019-01-12 11:34:14 · 558 阅读 · 0 评论 -
数据结构与算法-如何用链表来实现LRU缓存淘汰策略
极客笔记 什么是缓存? 缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非广泛的应用,比如常见的CPU缓存、数据库缓存、浏览器缓存等等。 为什么使用缓存?即缓存的特点 缓存的大小是有限的,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该被保留?就需要用到缓存淘汰策略。 什么是缓存淘汰策略? 指的是当缓存被用满时清理数据的优先顺序。 有哪些缓存淘汰策略? 常见的3种包括先进先出策略...原创 2019-01-13 22:02:10 · 348 阅读 · 0 评论 -
数据结构与算法-如何轻松写出正确的链表代码
极客学习笔记 6大学习技巧 技巧一:理解指针或引用的含义 含义:将某个变量(对象)赋值给指针(引用),实际上就是就是将这个变量(对象)的地址赋值给指针(引用)。 示例: p—>next = q; 表示p节点的后继指针存储了q节点的内存地址。 p—>next = p—>next—>next; 表示p节点的后继指针存储了p节点的下下个节点的内存地原创 2019-01-14 16:31:36 · 157 阅读 · 0 评论 -
数据结构与算法-栈
一、什么是栈? 后进者先出,先进者后出,这就是典型的 “ 栈 ” 结构。 从栈的操作特性来看,是一种 “ 操作受限 ” 的线性表,只允许在端插入和删除数据。 二、为什么需要栈? 栈是一种操作受限的数据结构,其操作特性用数组和链表均可实现。 但,任何数据结构都是对特定应用场景的抽象,数组和链表虽然使用起来更加灵活,但却暴露了几乎所有的操作,难免会引发错误操作的风险。 所以,当某个数据集合只涉及...原创 2019-01-21 09:46:32 · 249 阅读 · 0 评论 -
数据结构与算法-队列
极客笔记 一、什么是队列? 1.先进者先出,这就是典型的“队列”结构。 2.支持两个操作:入队enqueue(),放一个数据到队尾;出队dequeue(),从队头取一个元素。 3.所以,和栈一样,队列也是一种操作受限的线性表。 二、如何实现队列? 1.队列API public interface Queue<T> { public void enqueue(T item); //入队 ...原创 2019-01-21 16:58:37 · 128 阅读 · 0 评论 -
数据结构与算法-排序(上)
冒泡排序( Bubble Sort ) // 冒泡排序,a表示数组,n表示数组大小 public void bubbleSort(int[] a, int n) { if (n <= 1) return; for (int i = 0; i < n; ++i) { // 提前退出冒泡循环的标志位 ...原创 2019-01-22 12:03:24 · 152 阅读 · 0 评论