两两交换链表中的节点
2017-03-27 23:48
246 查看
题目:给一个链表,两两交换其中的节点,然后返回交换后的链表。
样例
给出
思路:两两交换节点乍一看好像就是交换两个节点的位置,仔细想一想交换的是数值,两个一组两个一组,只要head->next不是NULL,或者head不是NULL就可以交换俩个节点的值,head节点再移动两个位进行下一次条件的判断。中间值得注意的是,要提前把交换的值记录下来,不要交换的时候丢失。下面看一下具体的代码。
代码:
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
/**
* @param head a ListNode
* @return a ListNode
*/
ListNode* swapPairs(ListNode* head) {
// Write your code here
ListNode *dummy=new ListNode(0);
dummy->next=head;
while(head!=NULL&&head->next!=NULL)
{
int s=head->val;
head->val=head->next->val;
head->next->val=s;
head=head->next->next;
}
return dummy->next;
}
};
感想:这个题思路上并不难,写代码的时候重点在于认真仔细。这个虽然简单,但并不是一下子就能写对,思考还是有不足的地方。期待自己的进步。
样例
给出
1->2->3->4, 你应该返回的链表是
2->1->4->3。
思路:两两交换节点乍一看好像就是交换两个节点的位置,仔细想一想交换的是数值,两个一组两个一组,只要head->next不是NULL,或者head不是NULL就可以交换俩个节点的值,head节点再移动两个位进行下一次条件的判断。中间值得注意的是,要提前把交换的值记录下来,不要交换的时候丢失。下面看一下具体的代码。
代码:
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
/**
* @param head a ListNode
* @return a ListNode
*/
ListNode* swapPairs(ListNode* head) {
// Write your code here
ListNode *dummy=new ListNode(0);
dummy->next=head;
while(head!=NULL&&head->next!=NULL)
{
int s=head->val;
head->val=head->next->val;
head->next->val=s;
head=head->next->next;
}
return dummy->next;
}
};
感想:这个题思路上并不难,写代码的时候重点在于认真仔细。这个虽然简单,但并不是一下子就能写对,思考还是有不足的地方。期待自己的进步。
相关文章推荐
- 【LintCode 简单】451. 两两交换链表中的节点
- 两两交换链表中的节点
- LintCode:两两交换链表中的节点
- 两两交换链表中的节点 - C++
- 两两交换链表中的节点
- 两两交换链表中的节点-LintCode
- 两两交换链表中的节点
- 两两交换链表中的节点
- 两两交换链表中的节点
- 451. 两两交换链表中的节点(swap-nodes-in-pairs)(c++)----lintcode面试题之链表
- 两两交换链表中的节点
- Java实现-两两交换链表中的节点
- 作业4.451:两两交换链表中的节点
- 两两交换链表中的节点
- [LintCode 451] 两两交换链表中的节点(Python)
- 两两交换链表中的节点
- 两两交换链表中的节点-LintCode
- LintCode 两两交换链表中的节点
- 两两交换链表中的节点
- lintcode——两两交换链表中的节点