24. Swap Nodes in Pairs
in LeetCode with 0 comment

24. Swap Nodes in Pairs

in LeetCode with 0 comment
题目链接: https://leetcode.com/problems/swap-nodes-in-pairs/description/

链表套餐: https://leetcode.com/tag/linked-list/

题目描述

交换指针,比较简单的题目。

Example:

Given 1->2->3->4, you should return the list as 2->1->4->3.

代码

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);

Responses

From now on, bravely dream and run toward that dream.
陕ICP备17001447号