从尾到头打印链表

来源:互联网 发布:长沙网络公关 编辑:程序博客网 时间:2024/04/29 16:50
题目描述:

输入一个链表,从尾到头打印链表每个节点的值。

输入:

每个输入文件仅包含一组测试样例。
每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。

输出:

对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。

样例输入:
12345-1
样例输出:
54321
AC 代码
#include <iostream>#include <stdlib.h>#include <stdio.h>#include <string.h>#define max_size 1000000using namespace std;struct node{         int value;         node * next;         node *tail;};                                 //直接采用书中,遍历建表会超时。 为了简单, 添加tail ,但是浪费了空间bool addToTail(struct node **phead,  int value){         if(phead==NULL)             return false;         struct node *pNew = new struct node;         struct node *tail;         pNew->value = value;         pNew->next = NULL;         if(*phead==NULL)            {*phead = pNew;   (*phead)->tail = pNew;}         else         {                tail = (*phead)->tail;                tail->next = pNew;                (*phead)->tail = pNew;         }         return true;}void reverOut(struct node *head){          if(head==NULL)              return;          else               reverOut(head->next);           printf("%d\n", head->value);}int  main( ){        int value;        struct node *head = NULL;       while(1)       {              scanf("%d", &value);              if(value==-1)                   break;               if(!addToTail(&head, value))                    break;       }       reverOut(head);       return 0 ;}

0 0
原创粉丝点击