zoukankan      html  css  js  c++  java
  • 链表逆序(递归法)

    来自SO,貌似没啥实际应用,但是思路不错,留存。

    #include <Windows.h>
    #include <iostream>
    using namespace std;
    
    struct node
    {
        int data;
        node* next;
        node(int d, node* p):data(d), next(p){}
    };
    
    void print_list(node* head)
    {
        node* temp = head;
        while(temp != NULL)
        {
            cout << temp->data << " -> ";
            temp = temp->next;
        }
        cout << "NULL";
        cout << endl;
    }
    
    void reverse_linklist1(node*& head)
    {
        node* first = head; 
        node* rest  = first->next;
    
        if (rest == NULL)
           return;  
    
        reverse_linklist1(rest);
    
        first->next->next  = first; 
        first->next  = NULL;         
    
        head = rest;             
    }
    
    void reverse_linklist2(struct node*& head)
    {
        node *p = head;
        if(p->next == NULL){
            return;
        }
    
        head = p->next;
        reverse_linklist2(head);
    
        p->next->next = p;
        p->next = NULL;
    }
    
    int main(void)
    {
        // build link list
        node* p3 = new node(3, NULL);
        node* p2 = new node(2, p3);
        node* p1 = new node(1, p2);
    
        print_list(p1);
        reverse_linklist2(p1);
        print_list(p1);
    
        getchar();
        return 0;
    }

    ==

  • 相关阅读:
    jQuery之选择器
    JAVA之网页截屏
    AJAX之JSON
    JSP之AJAX
    JSP之邮箱检验
    【16】LRUChache
    hashmap与currentHashMap
    Day1 工厂模式
    D0 设计模式
    【15】【有点特殊的dp】 剪绳子
  • 原文地址:https://www.cnblogs.com/graphics/p/3780227.html
Copyright © 2011-2022 走看看