您的位置:首页 > 编程语言 > C语言/C++

作业4.451:两两交换链表中的节点

2017-03-27 21:10 274 查看
题目:两两交换链表中的节点

样例:给出1->2->3->4,你应该返回的是2->1->4->3。

思路:首先排除空链表和只有一个节点的链表。然后设定一个temp,两两交换节点,然后再令指针指向后一个的next,以免重复操作。

代码:

class Solution {
public:
/**
* @param head a ListNode
* @return a ListNode
*/
ListNode* swapPairs(ListNode* head) {
// Write your code here
if (head == NULL)
return 0;
ListNode *p = head;
while (p != NULL && p->next != NULL) {
int temp;
temp = p->val;
p->val = p->next->val;
p->next->val = temp;
p = p->next->next;
}
return head;
}
};

感想:我认为,交换两个节点的值是很简单的,有一点必须注意,每两个两个进行交换,所以,当两个交换完成后,应使指针指向这两个节点中后一个的next,才能避免对一个节点进行了两次操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++作业