PTA 7-1 栈的基本操作

给定一个初始为空的栈(栈容量为10)和一系列进栈、出栈操作,请编写程序输出经过这些操作后栈的元素。栈的元素值均为整数。

输入格式:

输入第1行为1个正整数n,表示操作个数;

第2行为给出的n个整数,非0元素表示进栈,此非0元素即为进栈元素,0元素表示出栈。

保证栈中元素个数不超过10个。

输出格式:

第一行按出栈顺序输出所有出栈元素,以一个空格隔开;如果栈满时做进栈操作会输出"FULL”,如果栈空时做出栈操作会输出"EMPTY";

第二行中清空栈中剩余的所有元素,以一个空格隔开。
末尾均有一个空格(出栈的形式一个个清空栈元素)。

输入样例:

12
3 1 2 0 0 -1 0 0 0 4 5 0

输出样例:

2 1 -1 3 EMPTY 5 
4 

 考查C语言栈的基本操作,想必LGD的精英学子们一定可以做出来

代码实现:

#include <stdio.h>  
#define size 10  
typedef struct {  
    int data[size];  
    int top;  
} stack;  
  
// 初始化栈  
void zhan(stack *s) {  
    s->top = -1;  
}  
  
// 判断栈是否为空  
int empty(stack *s) {  
    return s->top == -1;  
}  
  
// 判断栈是否已满  
int full(stack *s) {  
    return s->top == size - 1;  
}  
  
// 进栈操作  
void jin(stack *s, int val) {  
    if (full(s)) {  
        printf("FULL ");  
    } else {  
        s->data[++s->top] = val;  
    }  
}  
  
// 出栈操作  
int chu(stack *s) {  
    if (!empty(s)) {  
        printf("%d ", s->data[s->top--]);  
    } else {  
        printf("EMPTY ");  
    }  
}  
  
// 清空栈中剩余的所有元素  
void clear(stack *s) {  
    while (!empty(s)) {  
        chu(s);
    }  
}  
  
int main() {  
    int n, x, i;  
    stack s;  
    zhan(&s);  
    // 读取操作个数  
    scanf("%d", &n);  
    // 读取操作序列并执行  
    for (i = 0; i < n; ++i) {  
        scanf("%d", &x);  
        if (x != 0) {  
            jin(&s, x);  
        } else {  
            chu(&s);  
        }  
    }  
    printf("\n");
    // 输出栈中剩余的元素  
    clear(&s);  
    return 0;  
}

  • 14
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值