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.

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

    #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;
    }
  • 相关阅读:
    杂篇章
    敲代码中遇到的小问题
    数组的运用
    java中强大的免费的集成开发环境(IDE)eclipse的使用技巧及注意事项
    流程
    博客目录
    pgk
    gogs
    github相关
    axios记录
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3630572.html
Copyright © 2011-2022 走看看