#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <corecrt_malloc.h>
//栈一个接受数据date 一个指向下一个节点的指针next 栈的指针是从上往下指的 即栈顶指向栈尾 创建一个新节点的时候
//让新节点的next指向原有的头节点 再让头节点指向新节点
//创建一个栈
typedef struct stack {
int date,top;
struct stack* next;
}sta,*psta;
//初始化栈
void init(psta P) {
P->top = 0;
}
//入栈
//指针传入要改变指针的指向也要引用&
void push(psta &head,int n ) {
psta k;
k = (psta)calloc(1, sizeof(sta));
k->date = n;
k->next = head;//要让新的节点指向老的节点 从上往下指 从头向尾指
k->top = head->top + 1;
head = k;
}
//判空
bool pk(psta head) {
if (head->top == 0) {
return true;
}
else {
return false;
}
}
//出栈
void pop(psta &head, int &m){
if (pk(head)) {
return;
}
else {
m = head->date;
head = head -> next;
printf("%d", m);
}
}
int main() {
psta head;
head = (psta)calloc(1, sizeof(sta));
init(head);
int n,m;
//scanf返回值为正确输入的参数的个数 这里为1 如果错误的输入 while循环不能进行
while (scanf("%d", &n)) {
if (9999 == n) {
break;
}
push(head, n);
}
while(!pk(head)){
pop(head, m);
}
return 0;
}