反转链表中相邻两个元素
2013-03-21 21:30
225 查看
转自出处
链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g
思路:常见的三指针方法
[cpp] view
plaincopy
typedef struct LinkNode
{
int data;
struct LinkNode* next;
}LinkNode , *LinkList;
LinkList inverseList(LinkList head)
{
if(head == NULL || head->next == NULL)
return head;
LinkList pre = NULL;
LinkList curr = head;
LinkList next = NULL;
while(curr && curr->next)
{
if(pre)
pre->next = curr->next;
else
head = curr->next;
pre = curr;
next = curr->next->next;
curr->next->next = curr;
curr->next = next;
curr = next;
}
return head;
}
链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g
思路:常见的三指针方法
[cpp] view
plaincopy
typedef struct LinkNode
{
int data;
struct LinkNode* next;
}LinkNode , *LinkList;
LinkList inverseList(LinkList head)
{
if(head == NULL || head->next == NULL)
return head;
LinkList pre = NULL;
LinkList curr = head;
LinkList next = NULL;
while(curr && curr->next)
{
if(pre)
pre->next = curr->next;
else
head = curr->next;
pre = curr;
next = curr->next->next;
curr->next->next = curr;
curr->next = next;
curr = next;
}
return head;
}
相关文章推荐
- 链表相邻元素反转
- 用单循环链表存储一个环上的数据,并计算任意两个相邻元素之差是否超过2
- 只调整指针来交换两个相邻的元素【双链表】
- 剑指offer 01-06解答思路以及代码(顺序数组找特定数字,替换空格字符,链表反转输出,重建二叉树,两个栈实现队列效果,旋转数组最小元素)
- 交换单链表中相邻的两个元素 Swap Nodes in Pairs
- 两个有序链表(相邻元素可能相同)找出他们交集,并把结果放到另一链表中
- 输入一个链表,反转链表后,输出链表的所有元素。
- 合并两个链表,去掉重复元素
- 按要求打印两个已排序链表中的元素
- 已知两个链表 la和 lb,其元素值递增排序。编程将la和lb合并成一个递减有序(相同值元素只保留一个)的链表lc。(北方名校经典试题) 本题选做
- 尾插法、头插法创建链表、链表反转、链表分段反转、查找链表倒数第k个元素,查找链表中间元素
- 实数序列,求值相邻的两个元素的最大差值
- 两个单向链表,存在同一个元素,求其交点
- 链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->g
- 合并两个链表,两个表的元素交叉进行,合并之后合并后的链表变成空表
- hdu 1016 深搜加步长 相邻两个元素为质数建立边
- 编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位
- 单链表相邻两个节点之间交换顺序
- 将两个按元素值递增排序的单链表合并成一个按元素值递减的单链表
- 已知两个有序的链表P,L,将P中由L所指定的位置上的元素打印出来