4.单向链表4.单向链表Table of Contents1. 链表结构体2. 创建链表3. 打印链表4. 插入链表5. 删除链表6. 删除结点7. 查找数据8. 统计数据9. 测试代码1 链表结构体/*结构体*/typedef struct _link_node{ struct _link_nod... ...
分类:
其他好文 时间:
2016-07-13 09:21:22
阅读次数:
207
题目给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。解题这个删除结点的方式很好
把需要删除结点的值用后面一个结点值更新
删除后面的那个结点public class Solution {
/**
* @param node: the node in the list should be deleted
* @return:...
分类:
其他好文 时间:
2016-06-29 11:28:28
阅读次数:
160
;删除结点 左孩子 右孩子都有 2种删除方法 1 左孩子中找最大的叶子结点,然后交换最大结点的值和要删除结点的值 把最大的结点删除 2 右孩子中找最小的叶子节点,然后交换最小节点的值和要删除结点的值, 把最小的结点删除即可 ; ...
分类:
其他好文 时间:
2016-06-05 22:58:08
阅读次数:
144
对于一个有n个结点的无根树,找一个点作为根,使得最大子树的结点数最小,换句话说,删除这个点后最大连通块的结点数最小。
任选一个点作为根,设d(i)表示以i为根的子树的结点个数,那么:
只需要一次dfs,连记忆化都不需要,因为没有重复计算。现在重点来了:
删除结点i之后,最大连通块有多少个结点呢?
结点i的子树中最大的有max{d(j)}个结点,i的“上方子树”中有n-d(i)个结点!po...
分类:
其他好文 时间:
2016-05-07 10:33:35
阅读次数:
112
用两个栈实现一个队列,并实现两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。栈的特点是“先进后出,后进先出”,而队列的特点是“先进先出,后进后出”,因此可以想到只用一个栈是无法完成的,所以会需要两个栈,先将输入的数据都..
分类:
其他好文 时间:
2016-04-28 12:36:57
阅读次数:
250
单链表学习 学习第一步:定义存放链表结点的类Node,类中包含两个字段:data字段和next字段,data字段是结点中的数值域,next是指向链表下一个结点的引用 学习第二步:学习单链表的一些操作,插入、删除、查找结点 双端链表学习 可以看到我们上面的操作,在链表尾插入、删除结点的操作,虽然也可以 ...
分类:
其他好文 时间:
2016-04-16 21:19:15
阅读次数:
254
遇到一个让人迷惑的题目。 以下关于线性表采用链式存储时删除节点运算的描述,正确的是() A.带头结点的线性链表删除结点时,不需要更改头指针。 B.带头结点的线性链表删除第一个结点时,需要更改头指针。 C.不带头结点的线性链表删除结点时,需要更改头指针。 D.不带头结点的线性链表删除第一个结点时,不需
分类:
其他好文 时间:
2016-03-02 22:05:19
阅读次数:
192
题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。分析:删除结点可以从链表的头结点开始顺序遍历,发现某个结点的next指向要删除的结点时,将该结点的next指向要删除的下一个结点。但是基于这种思路,得到的时间复杂度是O(n)。删除结点只是让这..
分类:
其他好文 时间:
2016-02-19 14:33:06
阅读次数:
193
主要是单链表的一些常见操作:像创建链表,删除结点,插入结点,链表逆序,按大小排序等 1 #include 2 using namespace std; 3 4 struct Node 5 { 6 int val; 7 Node *next; 8 Node(...
分类:
其他好文 时间:
2016-01-20 22:14:05
阅读次数:
297
二叉排序树/************************************************************************* 这是一个二叉查找树,实现了以下操作:插入结点、构造二叉树、删除结点、查找、 查找最大值、查找最小值、查找指定结点的前驱和后继。上述所有操.....
分类:
编程语言 时间:
2015-11-28 13:34:56
阅读次数:
235