[C语言][LeetCode][24]Swap Nodes in Pairs
2016-04-13 08:41
639 查看
题目
Swap Nodes in PairsGiven a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
标签
Linked List难度
简单分析
题目意思是给定一个单链表,交换两个相邻的节点。我的做法是先找到新链表的头结点,然后像交换两个变量的值的方式,来交换两个相邻的节点,这里需要注意的是,交换的时候,需要保存交换节点的前后节点,这里我用left、right去保存,为了交换之后,前后节点不丢失。C代码实现
struct ListNode* swapPairs(struct ListNode* head) { struct ListNode *p, *q, *right, *left; struct ListNode * ret; if(!head || !head->next) return head; p = head; q = p->next; if(p && q) ret = q; while(p && q) { right = q->next; q->next = p; left = p; p->next = right; p = right; if(!right || !right->next) break; if(right->next) { q = p->next; left->next = q; } } return ret; }
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析