表的实现:数组:可以用动态数组实现,但是,删除和插入的开销太大。链表:由内存中一系列不相连的结构连成;每个结构含有表元素和指向下一个结构的指针;链表的实现: ps:为了方便删除和插入,我们设置一个头节点;节点:包含一个元素和指向下一个节点的指针;1 struct Node{2 int E...
分类:
其他好文 时间:
2014-07-09 23:59:48
阅读次数:
401
基本思想:在遍历结点过程中,设置辅助指针,用于记录先前遍历的结点。这样依次编译的过程中只需修改其后继结点的next域即可。 实现代码:[cpp]view plaincopyprint?typedefintDataType;//类型定义typedefstructnode{//单链表定义DataT...
分类:
其他好文 时间:
2014-07-07 21:19:21
阅读次数:
241
Sort a linked list in O(n log n)
time using constant space complexity.
看到O(n log n)的排序算法,适合单链表的首先想到的就是归并排序
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* Lis...
分类:
其他好文 时间:
2014-07-02 08:47:34
阅读次数:
239
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first
two lists.
代码如下:
* Definition for singly-linked list.
* struct L...
分类:
其他好文 时间:
2014-07-02 07:23:59
阅读次数:
159
如果在单链表或头指针表示的链表上操作这个比较消耗性能,因为都需要遍历第一个链表,找到an,然后将b1链接到an的后面,时间复杂度是:O(n)。若在尾指针表示的单循环链表上实现,则只需改变指针,无需遍历,时间复杂度是:O(1)
现在看算法实现,需要4个主要步骤,都注释了:
LinkList Connect(LinkList A,LinkList B){
//假设A,B为非空循环链表的尾指针...
分类:
其他好文 时间:
2014-06-29 22:33:08
阅读次数:
319
单链表的节点结构一般如下: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