九度笔记之 1511:从尾到头打印链表

题目1511:从尾到头打印链表

时间限制:1 秒

内存限制:128 兆

特殊判题:

提交:332

解决:121

题目描述:

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

输入:

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

输出:

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

样例输入:
1
2
3
4
5
-1
样例输出:
5
4
3
2
1

算法分析

     逆序我们首先想到的是栈,又想到递归过程就是栈的入栈出栈过程,所以我们用递归来做。

源程序

#include <stdio.h>
struct Node{
    int num;
    Node *next;
public:
    Node(int num_):num(num_),next(NULL){};
};
 
Node *pbegin=new Node(0);
Node *pend=pbegin;
void init(){
 
    pbegin=new Node(0);
    Node *temNode=NULL;
    int num = 0;
    while(1){
        scanf("%d",&num);
        if(num==-1)
            break;
        temNode = new Node(num);
        if(pbegin->next ==NULL){
            pbegin->next = temNode;
            pend = temNode;
        }else{
            pend->next =  temNode;
            pend = temNode;
        }
 
    }
}
void printList(Node *node){
    if(node==NULL)
        return;
    printList(node->next);
    printf("%d\n",node->num);
}
void judo(){
 
        init();
        printList(pbegin->next);
     
}
int main()
{
    judo();
    return 0;
}
 
/**************************************************************
    Problem: 1511
    User: KES
    Language: C++
    Result: Accepted
    Time:100 ms
    Memory:5548 kb
****************************************************************/



你可能感兴趣的:(九度笔记之 1511:从尾到头打印链表)