首页 > 其他 > 详细

Leetcode Swap Nodes in Pairs

时间:2014-03-28 23:32:44      阅读:445      评论: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.

主要考查链表的基本操作,特别注意链表为空或者只有一个链表节点的情况

bubuko.com,布布扣
#include <iostream>
#include <algorithm>

using namespace std;
struct ListNode{
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL){}
};
void printListNode(ListNode *head){
  static int cnt = 1;
   ListNode *p= head;
   cout<<"("<<cnt++<<")";
   while(p){
      cout<< p->val<<"->";
      p = p->next;
  }
cout<<endl;
}

ListNode *swapPairs(ListNode *head){

    if(head == NULL || head->next == NULL) return head;
    ListNode *q = head,*p = head->next;
    head = NULL;
    q -> next = p->next;
    p -> next = q;
    head = p;
    ListNode *pre = NULL;
    while(q->next && q->next->next){
        pre = q;
        p = p->next->next;
        q = q->next->next;
        p->next = q ->next;
        q->next = p;
        pre->next = q;
        p = pre->next;
        q = p -> next;
    }
    return head;
}
bubuko.com,布布扣

Leetcode Swap Nodes in Pairs,布布扣,bubuko.com

Leetcode Swap Nodes in Pairs

原文:http://www.cnblogs.com/xiongqiangcs/p/3630572.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!