一、数据结构 1.手写链表的基本操作(创建、新增节点、删除节点、销毁等) 2.链表的反转 3.如何判断一个链表有环 4.双向链表删除一个非头非尾节点 5.单向链表删除一个非头非尾节点 6.二叉树的前、中、后序遍历打印 7.STL中vector的内部实现原理 8.STL中vector与list的区别 ...
分类:
编程语言 时间:
2019-08-20 22:30:56
阅读次数:
139
首先是LRU的定义,LRU表示最近最少使用,如果数据最近被访问过,那么将来被访问的几率也更高。 所以逻辑应该是每次都要将新被访问的页放到列表头部,如果超过了list长度限制,就将列表尾部的元素踢出去。 主要结构,STL中的双向链表结构list。 主要操作有get,表示访问key对应的value,此时 ...
分类:
其他好文 时间:
2019-08-18 23:40:44
阅读次数:
116
双向链表 上文中详解了单向链表, 本节主要针对双向链表的原理、优缺点以及各个操作进行讲解。 双向链表对于单项链表来说,它支持两个方向,每个结点不止有一个后继指针next指向后面的结点,而且还有一个前驱指针prev指向前面的结点,结合图来看看: 从图中可以看出,双向链表需要额外的两个空间来存储后继结点 ...
分类:
其他好文 时间:
2019-08-17 12:40:03
阅读次数:
95
[TOC] 题目地址 "hdu1276" 题干 代码和解释 本题使用了STL中的list,STL的list是双向链表。它的内存空间不必连续,通过指针来进行数据的访问,高效率地在任意地方删除和插入,插入和删除操作时常数时间。list和vector的优缺点正好相反,它们的应用场景不同: (1)vecto ...
分类:
其他好文 时间:
2019-08-17 09:15:24
阅读次数:
107
前言 前面讲过线性表中顺序表和链表的实现和性质。但是在数据结构与算法中,双向链表无论在考察还是运用中都占有很大的比例,笔者旨在通过本文与读者一起学习分享双链表相关知识。 双链表介绍 与单链表区别 逻辑上没有区别。他们均是完成线性表的内容。主要的区别是结构上的构造有所区别。 对于单链表: 对于一个节点 ...
分类:
编程语言 时间:
2019-08-14 12:20:34
阅读次数:
82
template<class T> class DLLNode { public: DLLNode() { next = prev = 0; } DLLNode(const T& el, DLLNode* n = 0, DLLNode * p = 0) { info = el; next = n; ... ...
分类:
编程语言 时间:
2019-08-12 00:56:30
阅读次数:
130
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 方法一:非递归版 方法二递归版 方法三:改进递归版 方法四 中序遍历递归方法 ...
分类:
其他好文 时间:
2019-08-10 17:37:39
阅读次数:
73
双向链表 一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。 操作 is_empty() 链表是否为空 length() 链表长度 travel() 遍历链表 add(i ...
分类:
其他好文 时间:
2019-08-07 22:55:06
阅读次数:
100
LinkedList是用链表结构存储数据的,比较适合数据的动态插入和删除,随机访问和遍历速度比较慢,还提供了List接口i中没有定义的方法,专门用于操作表头和表尾的元素,所以可以当作堆栈、队列和双向队列来使用。LInkedList持有头节点和尾节点的引用,有两个构造器,一个是无参构造器,另一个是传入 ...
分类:
其他好文 时间:
2019-07-29 23:05:09
阅读次数:
273
基本算法 位运算 枚举 贪心 递归 分治 递推 构造 模拟 数据结构 简单数据结构 树形结构 线段树 树状数组 字典树 伸展树 左偏树 动态树 lca&rmq 划分树 SBT 字符串 kmp AC自动机 后缀数组 最小表示法 其它 并查集 散列表 单调栈 块状链表 双向链表 离线分治算法 可持久化数 ...
分类:
其他好文 时间:
2019-07-27 09:39:46
阅读次数:
96