LeetCode Swap Nodes in Pairs

来源:互联网 发布:全网通是什么网络制式 编辑:程序博客网 时间:2024/06/05 16:09

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

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

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

题意:两两交换结点

思路:首先很容易用两个指针t1,t2做到前后结点的交换,然后再用一个结点来记录前一个,然后就能处理了

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode *swapPairs(ListNode *head) {        if (head == NULL) return NULL;        if (head->next == NULL) return head;        ListNode *t1, *t2, *pre;        t1 = head;        pre = head;        while (t1 != NULL && t1->next != NULL) {            t2 = t1->next;            t1->next = t2->next;            t2->next = t1;            if (pre != head)                 pre->next = t2;            else head = t2;            pre = t1;            t1 = t1->next;        }        return head;    }};




0 0
原创粉丝点击