困扰:之前了解到的删除节点的算法都是:知道了被删除结点的前驱节点和后继节点然后通过修改前驱节点的next就可以达到删除节点的目的。但是题目只给了被删除节点,却没有给被删除节点的前驱节点。因此一时不知道该怎样操作。 解决办法:将被删除节点的后继节点的值复制到被删除节点中,再将被删除节点的后继节点删除就 ...
分类:
其他好文 时间:
2020-10-24 10:21:12
阅读次数:
20
147. 对链表进行插入排序 方法一:插入排序 准备curr,prev当前节点和前驱节点用于判断是否有逆序的情况;再准备一个哨兵节点用于排序链表的插入。 tmp.next != curr && tmp.next.val < curr.val对应的逻辑关系是:此时对应当前节点curr的值$<$前驱节点 ...
分类:
编程语言 时间:
2020-10-24 09:46:15
阅读次数:
22
这是工作中遇到的小问题。 数据结构中有一种数据类型——堆栈,该结构中的数据项有如下特点: 除了最前面和最后面的数据,每个数据项都有一个前驱结点和一个后继结点; 堆栈两端分别称为栈顶和栈底,数据项只能在栈顶加入或者弹出。 很明显,堆栈的数据遵循先入后出原则。假设我们有 3 个不同的数据项,编号 1,2 ...
分类:
其他好文 时间:
2020-10-18 16:50:00
阅读次数:
25
概念:什么是双向链表 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。 所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。 代码简单实现: """ author: zhao xian xin 不积 ...
分类:
编程语言 时间:
2020-09-17 12:51:13
阅读次数:
34
容器迭代器 : 正向普通迭代器 :::iterator 正向常迭代器 :::const_iterator 反向迭代器 :::reverse_iterator // rbegin :最后一个迭代器的表示 rend : 第一个迭代器的前驱位置 遍历 rbegin > rend 使用++ 反向常量迭代器 ...
分类:
其他好文 时间:
2020-09-12 21:53:04
阅读次数:
61
本人git https://github.com/bigeyes-debug/Algorithm 一丶双向链表 单向链表只能通过node单向next从头遍历链表,只能直接获得后继,无法获得前驱 双向链表增加prev属性,prev属性指向前驱 双向链表可以从first 和last两个方向开始查找 二丶 ...
分类:
编程语言 时间:
2020-08-12 15:43:31
阅读次数:
65
未完待续。。。 一 线性表相关知识 1 定义:由零个或多个数据元素组成的有限序列 数学定义:若将线性表定义为(a1,a2,...,ai-1,ai,ai+1,...an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素 线性表的长度:线性表元 ...
分类:
其他好文 时间:
2020-07-27 09:23:31
阅读次数:
64
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是 ...
分类:
其他好文 时间:
2020-07-24 21:40:36
阅读次数:
62
1?? 利用拓扑排序算法,在拓扑排序算法结束后,如果还有顶点没有输出,则说明剩下这些结点都还有前驱,则它们构成一个有向回路 2?? 设有向图具有n个顶点,若该图的边数e≥n,则该图一定有一个闭合的环 3?? 设有向图具有n个顶点,若该图的每个顶点的出度至少为1,入度也至少为1,则图中一定有回路 4? ...
分类:
其他好文 时间:
2020-07-23 15:47:10
阅读次数:
147
1、链表是通过“指针”将一组零散的内存块串联起来的数据结构2、链表可以分为单链表、双向链表和单/双向循环链表2.1、删除链表中等于某个值的节点,单链表和双向链表的时间复杂度一样2.2、由于双向列表可以直接找到前驱结点,所以删除指定的节点,双向链表比单向链表高;同时在链表的某个指定结点前面添加一个结点 ...
分类:
编程语言 时间:
2020-07-22 02:11:20
阅读次数:
69