题目:将一个二叉查找树按照中序遍历转换成双向链表。 给定一个二叉查找树: 返回 1<->2<->3<->4<->5。 思路:如果对于当前节点,把右子树转换成双向链表,然后把左子树转换成双向链表,转换的时候我们都标记了链表的头节点和尾节点,那么只需要将当前节点和左子树的尾部相连,和右子树的头部相连即可 ...
分类:
编程语言 时间:
2017-07-24 22:33:42
阅读次数:
209
e.g. 给定链表 1->2->3->4,返回 2->1->4->3 的头节点。 我写了个常见的从头节点遍历,少量的奇数个或偶数个数据都能成功重新排列。但链表过长时结果显示 Time Limit Exceeded 。 看到有一个答案使用二级指针,忘了这种方法了! pp 从指向 head 指针到指向所 ...
分类:
其他好文 时间:
2017-07-10 19:18:24
阅读次数:
211
给定一个链表,删除从链表尾数起第n个节点,并返回头节点。 e.g. 给定链表:1 -> 2 -> 3 -> 4 -> 5,n = 2 删除倒数第二个节点后的链表: 1 -> 2 -> 3 -> 5 我的笨方法: 原理是判断要删除的节点为从头数起第 count 个节点,然后判断是否为头节点,进行删除。 ...
分类:
其他好文 时间:
2017-07-03 19:12:12
阅读次数:
152
【题目】 输入一个链表,输出该链表中倒数第k个结点。 【分析】 对于此题。考虑单链表实现,单链表仅仅能从头到尾遍历,而要找到倒数第k个结点,就须要确定,正数是第几个结点,假设结点总数为n。最后一个结点位置为n-1,而倒数第k个结点的位置就为n-k+1。假设从头节点開始遍历,仅仅要遍历到n-k+1步就 ...
分类:
其他好文 时间:
2017-06-17 19:29:25
阅读次数:
136
单链表有环的情况如上图所示,循环链表也属于有环的链表。 这里我们使用追逐法判断一个链表是否有环:设置两个指针slow和fast从头节点开始,slow每次移动一个节点,fast每次移动两个节点,如果fast遇到了NULL则表明链表没有环,停止循环。如果链表有环的话,那么这两个指针总会在某个位置相遇,相 ...
分类:
其他好文 时间:
2017-06-12 22:20:45
阅读次数:
120
今天会介绍另外一种反转单链表的方法,对于单链表反转这一类的算法,最重要的思想就是用临时变量来记住需要记住的节点。一个不够,那就用两个,或者用三个临时变量。 这次还是以图表来表现算法的过程,不同于上一篇,这次的头节点使用链表中的第一个节点。 该方法的思想就是遍历每个节点,将其插入到第一个节点之后。 如 ...
分类:
其他好文 时间:
2017-06-11 15:43:21
阅读次数:
197
题目描述: 给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。 注意事项 链表中的节点个数大于等于n 您在真实的面试中是否遇到过这个题? Yes 给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。 注意事项 链表中的节点个数大于等于n 给定一个链表,删除链表中倒数第n个节点,返回链表 ...
分类:
编程语言 时间:
2017-06-07 12:35:37
阅读次数:
149
带有头节点的循环链表。头节点的数据域为空,在查找某元素是否在链表中时,可用与存放该元素。头节点的next指针指向第一个元素。最后一个元素指向头节点。如图: 测试代码: #include<iostream> #include<string> #include"CircularList.cpp" #in ...
分类:
编程语言 时间:
2017-06-04 19:50:42
阅读次数:
253
题目: Sort a linked list using insertion sort. 思路: 链表的插入排序和数组的插入排序略有不同。以链表4->2->3->1->5为例,为方便操作添加一个头节点-1,此时链表为-1->4->2->3->1->5。基本思路为一次选择前后两个节点,若后节点大于前节 ...
分类:
其他好文 时间:
2017-06-02 23:04:16
阅读次数:
191
1.带表头的单向链表 (1)不带表头的单向链表在实现插入和删除时必须区分头结点和其它节点的处理。 (2)使用带表头的单向链表的优点:不用考虑头结点的单独处理。 表头节点:数据域没有值,指针域指向单向链表中数据域含值的第一个结点。 2.代表头的单向链表的基本操作 #include <stdio.h> ...
分类:
其他好文 时间:
2017-05-25 18:20:29
阅读次数:
247