zoukankan      html  css  js  c++  java
  • 单链表的反转-递归

    #include <stdio.h>

    typedef struct {

    int data;

    struct Node* next;

    }Node;

     

    Node* CreateNewNode(int value) {

    Node *temp = (Node*)malloc(sizeof(Node));

    temp->data = value;

    temp->next = NULL;

    return temp;

    }

    Node* CreateLinkedList(Node* head, int value){

    Node* temp = CreateNewNode(value);

    if(head==NULL) head=temp;

    else {

    Node* p = head;

    while(p->next) { p = p->next;}

    p->next = temp;

    }

    return head;

    }

    void PrintLinkedList(Node* head){

    if(head==NULL) printf("The linkedlist is empty.");

    else {

    Node* temp=head;

    while(temp) {

    printf(" %d => ",temp->data);

    temp=temp->next;

    }

    printf("NULL ");

    }

    }

    Node* ReverseLinkedList(Node* head) {

    if(head==NULL||head->next==NULL) {

    return head;

    }

    Node* newNode = ReverseLinkedList(head->next);

    Node* next = head->next;

    next->next = head;

    head->next = NULL;

    return newNode;

    }

    int main()

    {

       Node* head=NULL;

       head=CreateLinkedList(head, 1);

       head=CreateLinkedList(head, 2);

       head=CreateLinkedList(head, 3);

       head=CreateLinkedList(head, 4);

       PrintLinkedList(head);

       head=ReverseLinkedList(head);

       PrintLinkedList(head);

       return 0;

    }

     1 =>  2 =>  3 =>  4 => NULL

     4 =>  3 =>  2 =>  1 => NULL

     

     

  • 相关阅读:
    getfacl语法2
    getfacl
    setfacl语法2
    setfacl语法
    特殊权限语法2
    特殊权限语法
    vim语法
    locate语法
    find语法
    dos语法
  • 原文地址:https://www.cnblogs.com/lilideng/p/11291288.html
Copyright © 2011-2022 走看看