【Leetcode】Swap Nodes in Pairs

来源:互联网 发布:大数据平台运维管理 编辑:程序博客网 时间:2024/05/18 01:13

题目:

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.


解题思路:本题较简单,做3次指针变换就可以完成一轮交换。


代码:

/** * 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) {        ListNode *Zero;        ListNode *First=head,*Second;        ListNode Forehead(0);        if(head==NULL||head->next==NULL)return head;        Zero=&Forehead;        while(First!=NULL){            Second=First->next;            if(Second!=NULL){                First->next=Second->next;                Second->next=First;                Zero->next=Second;                Zero=First;                First=First->next;            }else{                break;            }        }        return Forehead.next;    }};


0 0
原创粉丝点击