快慢指针算法描述定义两个指针slow, fast。slow指针一次走1个结点,fast指针一次走2个结点。如果链表中有环,那么慢指针一次会再某一个时刻追上快指针(slow == fast)。如果没有环,则快指针会第一个走到NULL。实现结点定义如下:class Node {
public Node next;
public Object data; public static...
分类:
其他好文 时间:
2015-08-01 14:20:14
阅读次数:
141
要判断是否是回文链表这本身不难,难就难在对那两个复杂度的要求太恶心了。我一开始的想法是先找出链表的中点,再向两边遍历,以右结点为空作为循环结束的条件。感觉挺好哈,可是这特么是单向链表。然后我琢磨像 12321 这样的有一个特点,就是 1 + 3 = 2 + 2 = 3 + 1 觉得我特么简直就是天才...
分类:
其他好文 时间:
2015-07-29 00:50:59
阅读次数:
121
上一篇博文中主要总结线性表中的链式存储结构实现,比如单向链表、循环链表,还通过对比链表和顺序表的多项式的存储表示,说明链表的优点。可以参看上篇博文http://blog.csdn.net/lg1259156776/article/details/47018813
下面先对没有介绍的链表中的双链表进行介绍,并通过稀疏矩阵的三元组的链式结构来深入理解较为复杂的链表存储结构。最后对三次博文所讲述的内容...
分类:
其他好文 时间:
2015-07-27 01:56:56
阅读次数:
175
Palindrome Linked List
Given a singly linked list, determine if it is a palindrome.
Follow up:
Could you do it in O(n) time and O(1) space?
解题思路:
此题的题意为判断单向链表是否为回文。难点就是链表不能随机存取,而且不能反...
分类:
其他好文 时间:
2015-07-26 11:09:57
阅读次数:
87
基于之前做的单向链式线性表http://blog.csdn.net/shiwazone/article/details/47000191,改进下,实现了循环链表,相对应单向链表,循环链表将尾节点的指针域指向头节点,加入循环,可以让我们在查找某一个index的节点时,可以先判断一下位置和链表长度的关系,如果index处于链表的前半部分,我们可以从头节点遍历查找,如果处于后半部分,我们可以从尾节点往前...
分类:
编程语言 时间:
2015-07-23 09:33:24
阅读次数:
185
直观地想,如果想得到倒数第k 个节点,那么从后面往前数k个啰?这个不行,单向链表是行不通的,那么也可以这样,设有n个节点,那么向前往后数n-k+1个吧。但是这种方法要两次遍历链表,第一次是获得链表节点的个数n.第二次才找到倒数第k个节点。比较巧的方法是: 设两个指针,一个指各头,另一个与前一个指针相...
分类:
其他好文 时间:
2015-07-17 20:55:47
阅读次数:
120
基本概念 所 谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外, 仅需要存储一个被称为扩展分区的分区数据,...
分类:
其他好文 时间:
2015-07-17 12:17:52
阅读次数:
127
Given a singly linked list, determine if it is a palindrome.Follow up:Could you do it in O(n) time and O(1) space?判断一个单向链表是否是回文链表,要求O(n)的时间复杂度和O(1)的空间复杂度。算法有以下几种:1、遍历整个链表,将链表每个节点的值记录在数组中,再判断数组是不是一个回文数...
分类:
其他好文 时间:
2015-07-17 09:57:35
阅读次数:
133
有如下数据结构class Node{ public int Value { get; set; } public Node Next { get; set; }} 现有一个Node node对象,表示一个单向链表,判断这个单向链表是否有环public bool IsCricle(Nod...
分类:
其他好文 时间:
2015-07-07 16:22:34
阅读次数:
2517
题目:给定单项链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。解析:
删除单向链表中的一个节点,常规做法是必须找到待删除节点的前一个节点才能实现,而这样做的时间复杂度是O(n),无法满足要求。
创新想法:当我们想删除一个节点时,并不一定要删除节点本身,可以用当前节点保存它下一节点的值,然后删除它的下一个节点。情况案例:
1. 输入节点为NULL
2. 单链表只有一个节点,即...
分类:
其他好文 时间:
2015-07-06 16:03:01
阅读次数:
99