下面由MFC代码中抽取来,以最简便的方式实现了的链表功能:#include #include #include #define AFX_INLINE inline /*__forceinline*/#define ASSERT(f) ((void)0)#define AFX_NOV...
分类:
其他好文 时间:
2014-09-03 12:35:26
阅读次数:
288
实现一个基本的链表,包括在链表后添加数据节点和输出链表i所有数据的功能 1 #include 2 #include 3 4 typedef struct node 5 { 6 int data; 7 struct node *link; 8 }NODE; 9 10 //定义头指针1...
分类:
编程语言 时间:
2014-09-01 22:33:13
阅读次数:
319
经典题目,代码如下: 1 #include 2 #include 3 using namespace std; 4 struct ListNode { 5 int m_iData; 6 ListNode* m_pNext; 7 }; 8 ListNode* Reverse(Lis...
分类:
其他好文 时间:
2014-09-01 19:10:03
阅读次数:
257
本文主要介绍单链表反转的两种方法,记录如下:
1.
package com.leetcode;
public class ListReverse {
public static void main(String[] args) {
Node node1 = new Node(1);
Node node2 = new Node(2);
Node node3 = new Node...
分类:
编程语言 时间:
2014-09-01 14:06:03
阅读次数:
288
证明单链表有环路:
本文所用的算法 可以 形象的比喻就是在操场当中跑步,速度快的会把速度慢的扣圈
可以证明,p2追赶上p1的时候,p1一定还没有走完一遍环路,p2也不会跨越p1多圈才追上
我们可以从p2和p1的位置差距来证明,p2一定会赶上p1但是不会跳过p1的
因为p2每次走2步,而p1走一步,所以他们之间的差距是一步一步的缩小,4,3,2,1,0
到0的时候就重合...
分类:
其他好文 时间:
2014-09-01 10:48:33
阅读次数:
151
建立链表结点的结构体有关链表问题,我折腾了好长时间,总是断断续续的。如果想统一花一点时间攻克,估计也差不多能攻克了,折腾来折腾去,拖延症一犯,到现在也没有完全弄清楚。现在先把自己搞明白的有关链表的内容搞明白。 说起单链表,有以下几个方面的内容需要你会写。 建立单链表。 要想实现对链表的操作,首先的当...
分类:
其他好文 时间:
2014-09-01 00:11:32
阅读次数:
274
当我们需要对链表进行排序时,由于不能对它的元素进行随机访问,所以更适合使用归并排序,大名鼎鼎的快速排序用到链表上,效率也很低,原因还是在于不能对链表中的元素进行随机访问,同理,采用堆排序更是不可能的事情。对单链表进行归并排序,单链表与数组相比只能顺序访问每个元素,因此在使用二路归并排序时关键在于找到...
分类:
其他好文 时间:
2014-08-31 22:48:52
阅读次数:
431
题意:给定一个单链表,判断该链表中是否存在环,如果存在,返回环开始的节点
思路:
1.定义两个指针,快指针fast每次走两步,慢指针s每次走一次,如果它们在非尾结点处相遇,则说明存在环
2.若存在环,设环的周长为r,相遇时,慢指针走了 slow步,快指针走了 2s步,快指针在环内已经走了 n环,
则有等式 2s = s + nr => s = nr
3.在相遇的时候,另设一个每次走一步的慢指针slow2从链表开头往前走。因为 s = nr,所以两个慢指针会在环的开始点相遇
复杂度:时间O(n)
struct...
分类:
其他好文 时间:
2014-08-30 23:07:40
阅读次数:
187
2.3.1 线性链表 线性链表的链式存储结构的特定是用一组任意的存储单元存储线性表的数据元素(这组数据存储单元可以是连续的,也可以是不连续的)。 节点包括:数据域和指针域 只包含一个指针域的称为线性链表又称为单链表。 单链表的主要操作代码如下:#include#includeusing na...
分类:
其他好文 时间:
2014-08-25 01:02:33
阅读次数:
281