zoukankan      html  css  js  c++  java
  • LeetCode:Swap Nodes in Pairs

    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.

    思路:添加一个空的头指针,每两个结点一组,先链接后一个结点,再链接前一个结点(注意链接完后将该结点的next指针置为空)。

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     ListNode *next;
     6  *     ListNode(int x) : val(x), next(NULL) {}
     7  * };
     8  */
     9 class Solution {
    10 public:
    11     ListNode *swapPairs(ListNode *head) {
    12         if(head==NULL||head->next==NULL)
    13             return head;
    14         ListNode *p=head,*q=p->next,*r;
    15         r->next=NULL;
    16         head=r;
    17         while(p!=NULL)
    18         {
    19             if(q!=NULL)
    20             {
    21                 head->next=q;
    22                 q=q->next;
    23                 head=head->next;
    24             }
    25             head->next=p;
    26             head=head->next;
    27             head->next=NULL;
    28             p=q;
    29             if(p!=NULL&&p->next!=NULL)
    30                 q=p->next;
    31         }
    32         return r->next;
    33     }
    34 };
  • 相关阅读:
    python:返回函数,闭包
    对象的行为和数组
    类、对象和包
    Java语言中的程序流程控制
    初识Java,Java语言概述
    有限广播地址与直接广播地址
    H3C模拟器HCL注意事项
    HDLC协议
    NETBIOS的作用
    HP DL380G7 RAID配置
  • 原文地址:https://www.cnblogs.com/levicode/p/3974626.html
Copyright © 2011-2022 走看看