1、双向循环链表 双向链表是在单链表的每个结点中,再设置一个纸箱其前驱结点的指针域。双向链表可以有效的提高算法的时间性能,用空间换取时间。 typedef struct Node { ElemType data; struct Node* prior; //直接前驱指针 struct Node* n ...
分类:
其他好文 时间:
2020-02-20 20:14:01
阅读次数:
62
快慢指针: 定义两个指针,一个快,一个慢,可以有多种用途。例如:快速找到位置长度单链表中的中间结点;对于循环链表中利用快慢指针也可以判断是否存在环。 快速找到位置长度单链表中的中间结点 1)使用一个指针,先索引一遍获取总长度,再取长度一半去循环获取到中间值;O(3L/2)。 2)使用两个指针,快指针 ...
分类:
其他好文 时间:
2020-02-20 17:15:31
阅读次数:
65
1 #ifndef _LIST_H_ 2 #define _LIST_H_ 3 //虚基类 4 template<class ElemType> 5 class List 6 { 7 public: 8 List() {}; 9 virtual ~List() {}; 10 virtual void ...
分类:
其他好文 时间:
2020-02-18 16:35:38
阅读次数:
68
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节 ...
分类:
其他好文 时间:
2020-02-15 20:38:00
阅读次数:
64
package com.node;/** * @auther 付强 * @date 2020/2/14 - 9:20 *///一个节点 //循环链表public class LoopNode { //节点内容 int data; //下一个节点(循环链表只需要加一个this即可) LoopNode ...
分类:
编程语言 时间:
2020-02-14 21:01:50
阅读次数:
89
package com.node;/** * @auther 付强 * @date 2020/2/14 - 13:25 *///循环链表测试public class TestLoopNode { public static void main(String[] args) { LoopNode n1 ...
分类:
编程语言 时间:
2020-02-14 20:59:10
阅读次数:
77
package com.node;/** * @auther 付强 * @date 2020/2/14 - 13:46 */public class TestDoubleNode { public static void main(String[] args) { //创建节点 DoubleNode ...
分类:
编程语言 时间:
2020-02-14 20:39:20
阅读次数:
86
package com.node;/** * @auther 付强 * @date 2020/2/14 - 13:32 */public class DoubleNode { //上一个节点(等于this)保证循环 DoubleNode pre=this; //下一个节点 DoubleNode ne ...
分类:
编程语言 时间:
2020-02-14 20:35:12
阅读次数:
63
复杂的链式存储结构 循环链表 定义:是一种头尾相接的链表(即表中最后一个结点的指针域指向头结点,整个链表形成一个环) 优点:从表中任一节点出发均可找到表中其他结点 注意:涉及遍历操作时,终止条件是判断 p->next == L? 双向链表 定义:在单链表的每个结点离再增加一个指向直接前驱的指针域 p ...
分类:
其他好文 时间:
2020-01-30 19:33:15
阅读次数:
140
链表是一种物理存储单元上非连续、非顺序的存储结构。//相较于顺序存储结构:数组。 链表可以是单(向)链表,也可以是双(向)链表。//双向链表可以说是单向链表上的改进,这样子方便对节点的前驱节点进行操作。 *(?*ˊ?ˋ)?*? 也可以是循环链表,顾名思义,就是头尾相连的链表//目前是在做约瑟夫环的链 ...
分类:
其他好文 时间:
2020-01-22 20:01:23
阅读次数:
94