两两交换链表中的节点
2017-03-29 19:03
246 查看
问题描述:给一个链表,两两交换其中的节点,然后返回交换后的链表。
样例
给出
解题思路:现在链表最前面建立一个节点用于输出最后的链表,然后找到下两个节点交换两个节点的值,然后再找到下两个,如果链表节点个数是奇数用条件语句判断就可以了。
实现代码:class Solution {
public:
ListNode* swapPairs(ListNode* head) {
// Write your code here
ListNode* dummy= new ListNode(0);
dummy->next=head;
while(head!=NULL&&head->next!=NULL){
int n=head->val;
head->val=head->next->val;
head->next->val=n;
head=head->next->next;
}
return dummy->next;
}
};
感悟:一开始没怎么思考,感觉这个题很麻烦,可是后来仔细一想想,就是交换两个节点的值,然后以此向下遍历就可以了,其实这题很简单,多想想就可以了,但是得注意链表节点的个数。
样例
给出
1->2->3->4, 你应该返回的链表是
2->1->4->3。
解题思路:现在链表最前面建立一个节点用于输出最后的链表,然后找到下两个节点交换两个节点的值,然后再找到下两个,如果链表节点个数是奇数用条件语句判断就可以了。
实现代码:class Solution {
public:
ListNode* swapPairs(ListNode* head) {
// Write your code here
ListNode* dummy= new ListNode(0);
dummy->next=head;
while(head!=NULL&&head->next!=NULL){
int n=head->val;
head->val=head->next->val;
head->next->val=n;
head=head->next->next;
}
return dummy->next;
}
};
感悟:一开始没怎么思考,感觉这个题很麻烦,可是后来仔细一想想,就是交换两个节点的值,然后以此向下遍历就可以了,其实这题很简单,多想想就可以了,但是得注意链表节点的个数。