test_2 4.1 逆序输出(10分))

你的程序会读入一系列的正整数,预先不知道正整数的数量,一旦读到-1,就表示输入结束。然后,按照和输入相反的顺序输出所读到的数字,不包括最后标识结束的-1。

题目内容

你的程序会读入一系列的正整数,预先不知道正整数的数量,一旦读到-1,就表示输入结束。然后,按照和输入相反的顺序输出所读到的数字,不包括最后标识结束的-1。

输入格式

一系列正整数,输入-1表示结束,-1不是输入的数据的一部分。

输出格式

按照与输入相反的顺序输出所有的整数,每个整数后面跟一个空格以与后面的整数区分,最后的整数后面也有空格。

输入样例

1 2 3 4 -1

输出样例

4 3 2 1

限制

时间限制:500ms 内存限制:32000kb

代码实现

C语言

# include<stdio.h>
# include<stdlib.h>

typedef struct _node {
    int value;
    struct _node* before;
} Node;

int main () {
    Node* head = NULL;
    Node* a_before = NULL;
    int number;
    do {
        scanf("%d", &number);
        if ( number != -1 ) {
            Node* a = (Node*)malloc(sizeof(Node));
            a->value = number;
            a->before = a_before;
            a_before = a;
        }
    } while ( number != -1);

    for ( a_before; a_before; a_before=a_before->before ) {
        printf("%d ", a_before->value);
    }

    return 0;
}