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->3->4 输出: 2->1->4->3;

    注意:涉及到指针的操作,注意前两个节点在交换的时候要注意head指针的变化。

    代码:

    /**
     * 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) return NULL;
           ListNode *p = head;
           ListNode *q = p->next;  
           if(q==NULL) return head;
           int flag = 0;
           while(q!=NULL&&p!=NULL)
           {
                  if(flag == 0)//前两个节点交换
                  head = q;
                  
                  p->next = q->next;
                  q->next = p;
                  
                  ListNode *p1 = p;
                  
                  p=p->next;
                  if(p==NULL)
                  break;
                  else
                  {
                     q=p->next;
                     if(q!=NULL)
                     p1->next = q;
                     flag = 1;
                  }
           }
           return head;
        }
    };

  • 相关阅读:
    派生选择器
    HTML 标签
    $.get()
    CC150
    CC150
    CC150
    CC150
    HashMap和HashTable的区别
    CC150
    quickSort
  • 原文地址:https://www.cnblogs.com/sunp823/p/5601446.html
Copyright © 2011-2022 走看看