zoukankan      html  css  js  c++  java
  • 反转链表(不改变节点指针方向)

    #include <iostream>
    #include <stack>
    using namespace std;
    
    struct Node{
        int data;
        Node *next;
        Node(int d) : data(d) {}
    };
    
    int label = 0;
    
    //思路:设两个指针,left和right,首先将right走到头,交换left和right,然后每return一次,right自动向左一次,left手动向右走一次。
    void Reverse(Node *&left, Node *right){
        if (!left || !right)
            return;
    
        Reverse(left, right->next);
    
        if (left == right || right->next == left){    //left == right适用奇数节点情况,right->next == left适用偶数节点情况
            label = 1;
            return;
        }
        if (label == 1)
            return;
    
        int tmp = left->data;
        left->data = right->data;
        right->data = tmp;
        left = left->next;
    }
    
    void Reverse(Node *start){
        if (!start)
            return;
    
        Reverse(start, start);
    }
    
    void PrintLinkedList(Node *start){
        while(start){
            cout<<start->data<<endl;
            start = start->next;
        }
    }
    
    int main()
    {
        Node a(1);
        Node b(2);
        Node c(3);
        Node d(4);
        Node e(5);
        a.next = &b;
        b.next = &c;
        c.next = &d;
        d.next = &e;
        e.next = NULL;
        Reverse(&a);
        PrintLinkedList(&a);
        return 0;
    }

    EOF

  • 相关阅读:
    bzoj 1087 状压dp
    HDU 5289 尺取
    HDU 1693 插头dp入门详解
    字符串操作
    河南省多校联萌(一)
    HDU 4815 概率dp,背包
    HDU4804 Campus Design (轮廓线DP)
    HDU 4828 逆元+catalan数
    HDU 5651 组合+逆元
    天才少年曹原的内心
  • 原文地址:https://www.cnblogs.com/lihaozy/p/2839827.html
Copyright © 2011-2022 走看看