R7-2 栈的实现及基本操作

简介: R7-2 栈的实现及基本操作

分数 15

作者 朱允刚

单位 吉林大学


给定一个初始为空的栈和一系列压栈、弹栈操作,请编写程序输出每次弹栈的元素。栈的元素值均为整数。


输入格式:


输入第1行为1个正整数n,表示操作个数;接下来n行,每行表示一个操作,格式为1 d或0。1 d表示将整数d压栈,0表示弹栈。n不超过20000。


输出格式:


按顺序输出每次弹栈的元素,每个元素一行。若某弹栈操作不合法(如在栈空时弹栈),则对该操作输出invalid。



输入样例:

7
1 1
1 2
0
0
0
1 3
0

输出样例:

2
1
invalid
3
#include <stdio.h>
#define MAX 20000
//元素elem进栈
int push(int* a,int top,int elem){
    a[++top]=elem;
    return top;
}
//数据元素出栈
int pop(int * a,int top){
    if (top==-1) {
        printf("invalid\n");
        return -1;
    }
    printf("%d\n",a[top]);//弹栈元素
    top--;
    return top;
}
int main() {
    int n;
    scanf("%d",&n);
    int i,b,t;//t是操作,b是数 
    int top=-1;
    int a[MAX];//数组储存 
    while(n--){
        scanf("%d",&t);
        if(t==1){
            scanf("%d",&b);
            top=push(a,top,b);
        }else if(t==0){
            top=pop(a,top);
        }
    }
   
    return 0;
}


相关文章
|
7天前
|
机器学习/深度学习 算法 测试技术
【单调栈】3113. 边界元素是最大值的子数组数目
【单调栈】3113. 边界元素是最大值的子数组数目
|
1天前
|
存储 NoSQL C语言
数据结构——顺序栈与链式栈的实现-2
数据结构——顺序栈与链式栈的实现
数据结构——顺序栈与链式栈的实现-2
|
1天前
|
存储 C语言
数据结构——顺序栈与链式栈的实现-1
数据结构——顺序栈与链式栈的实现
数据结构——顺序栈与链式栈的实现-1
|
5天前
栈的基本应用
栈的基本应用
11 3
|
5天前
栈与队列理解
栈与队列理解
12 1
|
5天前
|
存储 算法
数据结构与算法 栈与队列
数据结构与算法 栈与队列
11 0
数据结构与算法 栈与队列
|
5天前
|
C++
数据结构(共享栈
数据结构(共享栈
6 0
|
5天前
|
C++
数据结构(顺序栈
数据结构(顺序栈
12 2
|
6天前
|
容器
【栈与队列】栈与队列的相互转换OJ题
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。
10 0
|
6天前
|
存储
【栈】基于顺序表的栈功能实现
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。
13 0