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.

     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) return head;
    13         
    14         ListNode **prev = &head;
    15         while ((*prev) != NULL && ((*prev)->next) != NULL) {
    16             ListNode *pcurr = *prev;
    17             ListNode *pnext = (*prev)->next;
    18             pcurr->next = pnext->next;
    19             pnext->next = pcurr;
    20             *prev = pnext;
    21             prev = &(pcurr->next);
    22         }
    23             
    24         return head;
    25     }
    26 };
  • 相关阅读:
    HDU2767 Proving Equivalences
    POJ2771 Guardian of Decency
    POJ1111 Image Perimeters
    简单就好
    工具乃思维的奴隶
    “年终奖”
    学点经济学知识(二)
    被忽略的技能
    猿类己见
    学点经济学知识(一)
  • 原文地址:https://www.cnblogs.com/vincently/p/4060154.html
Copyright © 2011-2022 走看看