码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode:Swap Nodes in Pairs

时间:2016-02-19 15:57:33      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

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.

分析:题意为给予一个链表,交换相邻的两个节点然后返回头结点。要求算法空间复杂度为O(1).

思路:新建一个链表每次插入temp->next后再插入temp,注意要判断若最后只剩下一个节点则不需要交换,每次交换了节点要把尾节点的下一个指向空。

代码:

/**
 * 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 *temp=head;
        ListNode *cur=helper;
        while(temp  && temp->next)
        {
            ListNode *next=temp->next->next;
            cur->next=temp->next;
            cur=cur->next;
            cur->next=temp;
            cur=cur->next;
            cur->next=NULL;
            temp=next;
        }
        if(temp) cur->next=temp;
        return helper->next;
    }
};

  

leetcode:Swap Nodes in Pairs

标签:

原文地址:http://www.cnblogs.com/carsonzhu/p/5201141.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!