题目:有一个线性表(a1,a2,a3,...,an),采用带头节点的单链表L存储,设计一个算法将其就地逆置,线性表变为(an,...a3,a2,a1)。所谓“就地”指辅助存储空间为O(1)。
解题思路:
如果是顺序存储的话,我们很容易想到解题思路,利用1个辅助变量让第1个元素与第n个元素交换,然后再利用这个辅助变量让第2个元素与第n-1个元素交换,...最后利用这个辅助变量让第n/2个元素与第...
分类:
其他好文 时间:
2015-01-08 21:42:52
阅读次数:
258
单链表逆置是链表的基本操作之一,我分别用递归和非递归两种方式实现单链表(不含头结点)的逆置,代码还是比较简洁的,欢迎批评指正。...
分类:
其他好文 时间:
2014-11-22 17:29:47
阅读次数:
203
/*问题描述,如何在时间复杂度为O(n)的前提下,实现单链表翻转。并尽量减少内存消耗。即1-2-4-5-6转化为6-5-4-2-1。*/ 1 # include 4 struct Slist{ 5 6 int size; 7 struct sl* head; 8 9 10 };...
分类:
其他好文 时间:
2014-10-27 17:25:26
阅读次数:
202
typedef int DataType;typedef struct node{ DataType data; struct node* next;}LinkedNode,*LinkList;void ReverseList(LinkedNode* pCur,LinkList& Lis...
分类:
其他好文 时间:
2014-10-22 00:36:45
阅读次数:
135
基本思想:在遍历结点过程中,设置辅助指针,用于记录先前遍历的结点。这样依次编译的过程中只需修改其后继结点的next域即可。 实现代码:[cpp]view plaincopyprint?typedefintDataType;//类型定义typedefstructnode{//单链表定义DataT...
分类:
其他好文 时间:
2014-07-07 21:19:21
阅读次数:
241
链表的常见操作 链表是数据结构的重要内容,在计算机程序中应用广泛,同时也是各公司笔试题目的重点。
以下简单实现了链表的一些操作,包括创建、增加节点、删除节点、单链表逆置、合并有序链表等。一、链表创建 链表主要有三种形式,包括单链表、双链表和循环链表。
单链表每个节点只包含一个后驱指针,双链表...
分类:
其他好文 时间:
2014-05-30 01:30:55
阅读次数:
298