24. Swap Nodes in Pairs

来源:互联网 发布:固定资产投资的算法 编辑:程序博客网 时间:2024/05/21 09:21

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.

原题链接:https://leetcode.com/problems/swap-nodes-in-pairs/

思路
需要一个辅助指针来帮忙。这里就是指针指向的问题,画图即可

代码(C++)

/** * 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 || head->next==NULL)             return head;        ListNode *helper=new ListNode(0);        ListNode *ret=head;        ListNode *cur=helper;        while(ret  && ret->next)        {            ListNode *next=ret->next->next;            cur->next=ret->next;            cur=cur->next;            cur->next=ret;            cur=cur->next;            cur->next=NULL;            ret=next;        }        if(ret)             cur->next=ret;        return helper->next;    }};
0 0
原创粉丝点击