九度OJ 1511 从尾到头打印链表

题目地址:http://ac.jobdu.com/problem.php?pid=1511

题目描述:

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

输入:

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

输出:

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

样例输入:
1
2
3
4
5
-1
样例输出:
5
4
3
2
1
#include <stdio.h>
#include <stdlib.h>
 
typedef struct node{
    int data;
    struct node * next;
} Node;
 
void Print_TailtoHead (Node * head){
    Node * p = head;
 
    if (p != NULL){
        Print_TailtoHead (p->next);
        printf ("%d
", p->data);
    }
}
 
int main(void){
    int input;
    Node * head = NULL;
    Node * p = NULL;
    Node * q = NULL;
 
    head = (Node *)malloc(sizeof(Node));
    head->next = NULL;
    p = head;
    while (scanf ("%d", &input) != EOF && input != -1){
        q = (Node *)malloc(sizeof(Node));
        q->data = input;
        q->next = NULL;
        p->next = q;
        p = p->next;
    }
    Print_TailtoHead (head->next);
 
    return 0;
}


参考资料:何海涛 -- 程序员面试题精选100题(31)-从尾到头输出链表[数据结构]

原文地址:https://www.cnblogs.com/liushaobo/p/4373810.html