【LeetCode OJ】Swap Nodes in Pairs

题目:Given a linked list, swap every two adjacent nodes and return its head.

For example,Given1->2->3->4, you should return the list as2->1->4->3.

Your algorithm should use only constant space. You maynotmodify the values in the list, only nodes itself can be changed.

解决思路:初始状态下,让指针p指向第一个节点,q指向第二个节点,当q不为空时,,交换两节点的值,再让p指向q后面的节点,q指向p后面的节点,交换节点值,一次循环管直到遇到空节点。代码如下:

struct ListNode{int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}};ListNode *swapPairs(ListNode *head){if (head == NULL || head->next == NULL)return head;ListNode *p = head;ListNode *q = p->next;while (q){int temp;temp = p->val;p->val = q->val;q->val = temp;if (q->next != NULL){p = q->next;if (p->next != NULL)q = p->next;elsebreak;}elsebreak;}return head;}

却只能这样。只有对爱的人,我们才会斤斤计较,锱铢必较。

【LeetCode OJ】Swap Nodes in Pairs

相关文章:

你感兴趣的文章:

标签云: