从尾到头输出单链表

来源:互联网 发布:java计算a阶乘之和 编辑:程序博客网 时间:2024/05/16 07:37
#include <stdio.h>#include <stack>#include <string>#include <iostream>using namespace std;#include <stack>  typedef struct Link{    int value;    struct Link  * LinkNext ;}Link,* LinkList;void initList(LinkList * head ){    if (head != NULL)  {        for (int i=0; i<10; i++) {            LinkList p = (LinkList)malloc(sizeof(Link));            p->value = i;            p->LinkNext = (*head)->LinkNext;            (*head)->LinkNext = p;        }    }}LinkList reverse(LinkList head){    LinkList last = NULL ;    LinkList start = head ;    while (start  != NULL) {        LinkList temp = start->LinkNext;        start->LinkNext = last ;        last = start ;        start = temp ;    }    return last;}LinkList reverse_DG(LinkList  start , LinkList last = NULL){    if(start == NULL)        return last;    LinkList temp = start->LinkNext;    start->LinkNext = last;    return reverse_DG(temp , start);}void printList(LinkList start){    if (start != NULL) {        while (start != NULL) {            cout<<start->value<<" ";            start = start->LinkNext;        }    }}//从尾到头打印链表方法1 递归void Print_method1(LinkList head){    if (head == NULL) {        return ;    }    Print_method1(head->LinkNext);    cout<<head->value<<" ";}//从尾到头打印链表2 利用栈void Print_methid2(LinkList head){    if(head != NULL || head->LinkNext != NULL){        stack<int> list ;        while( head !=NULL ){            list.push(head->value);            head = head->LinkNext;        }        while(!list.empty()){            cout<<list.top()<<" ";            list.pop();        }    }}int main(int argc , const char * argv[]) {    LinkList head = (LinkList)malloc(sizeof(Link));    head->LinkNext = NULL;    initList(&head);    cout<<"原始的数值:"<<endl;    printList(head->LinkNext);    LinkList q = NULL;    q = reverse_DG(head->LinkNext);    //   q = reverse(head->LinkNext);    cout<<endl<<"反转后的的数值:"<<endl;    printList(q);    cout<<endl<<"从尾到头打印链表"<<endl;    //Print_method1(q);    Print_methid2(q);    return 0;}
0 0
原创粉丝点击