024. Swap Nodes in Pairs

题目链接: 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);

作者

mmmwhy

发布于

2018-08-29

更新于

2022-10-30

许可协议

评论