题目链接: https://leetcode.com/problems/swap-nodes-in-pairs/description/
链表套餐: https://leetcode.com/tag/linked-list/
题目描述
交换指针,比较简单的题目。
1 2 3
| Example:
Given 1->2->3->4, you should return the list as 2->1->4->3.
|
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| class Solution { public: ListNode* swapPairs(ListNode* head) { if (head == NULL || head->next == NULL) return head; // 第二个元素肯定是头指针 ListNode *ans = head->next; // last 用于标记上一个元素的头部 ListNode *last = new ListNode(0); ListNode t1(1); while (head != NULL&&head->next!=NULL) { // p1和p2分别为第一二个元素 ListNode *p1 = head; ListNode *p2 = head->next; ListNode *temp = p2->next;
// 交换元素 p1->next = temp; p2->next = p1;
// 做标记 last->next = p2; if(p1->next) last = p1;
head = p1->next; } return ans; } };
|
point
以下两种写法内容是不一样的,事后看起来其实蛮明显的。
// 获得指针,如果之后需要指向别的位置
ListNode *t1 = new ListNode(0);
// 单纯的一个struct,指针不能赋值
ListNode t1(1);