单链表的节点结构一般如下:struct Node{ int val; Node* next;};在处理单链表的基本操作要注意以下事项:1、记住头节点单链表的每个操作都要从头节点开始。如果函数内头节点发生了改变,比如在头节点之前插入节点,删除头节点,反转链表等,都需要更新头节点...
分类:
其他好文 时间:
2014-06-27 19:46:49
阅读次数:
368
语言:C++描述:使用单链表实现,HeadNode是key=-1,value=-1,next=NULL的结点。距离HeadNode近的结点是使用频度最小的Node。 1 struct Node { 2 int key; 3 int value; 4 Node* next; 5...
分类:
其他好文 时间:
2014-06-27 18:48:42
阅读次数:
209
邻接表:邻接表是图的一种链式存储结构。在邻接表中,对图中每个顶点建立一个单链表,第i个单链表中的节点表示依附于顶点vi的边(对有向图是以顶点vi为尾的弧)。每个结点有三个域组成,其中邻接点域指示与顶点vi邻接的点在途中的位置,链域指示下一条边或者弧的结点;数据域存储和边或者弧相关的信息,如权值等。每个链表上附设一个表头结点。在表头结点中,除了设置链域指向链表第一个结点之外,还设置有存储顶点vi的名...
分类:
其他好文 时间:
2014-06-27 10:30:19
阅读次数:
277
相对于数组来说: 优点: 通过索引(数组下标)快地访问数组元素; 缺点: 插入/删除元素需要对数组进行调整, 效率低;而链表: 优点:插入/删除速度快而且用对整链表进行调整; 缺点:只能进行顺序访问能随机访问(像数组样用下标);所链表些需要快速插入/删除而太关心或者需要随机访问情况下使用.u...
分类:
其他好文 时间:
2014-06-25 09:08:38
阅读次数:
249
Sort a linked list using insertion sort.
仍然是一个非常简洁的题目,让我们用插入排序给链表排序;这里说到插入排序,可以来回顾一下, 最基本的入门排序算法,就是插入排序了;时间复杂度为n^2,最基本的插入排序是基于数组实现的,下面给出基于数组实现的插入排序,来体会一个插入排序的思想;
以下仅为数组实现,不是解题代码,没兴趣可以跳过。
vo...
分类:
其他好文 时间:
2014-06-24 23:56:31
阅读次数:
359
Given a singly linked list L: L0→L1→…→Ln-1→Ln,
reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…
You must do this in-place without altering the nodes' values.
For example,
Given {1,2,3,4}, reorder it t...
分类:
其他好文 时间:
2014-06-24 21:55:30
阅读次数:
279
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1-...
分类:
其他好文 时间:
2014-06-22 22:57:49
阅读次数:
347
Sort a linked list in O(n log n)
time using constant space complexity.
这道题目非常简短的一句话,给链表排序,看到nlogn,我们可以来简单复习一下排序。首先说一下这个nlogn的时间复杂度(根据决策树我们可以得出这个界限),是基于比较排序的最小上限,也就是说,对于没有一定范围情况的数据来说,最快的排序思路就是归并和快速排...
分类:
其他好文 时间:
2014-06-22 09:02:54
阅读次数:
250