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 

和队的基本操作差不多

主要不同的地方在于,后入栈的先出栈,先入队的先出队。

上代码:

#include<iostream>
int main(){
    int store[10]={0};
    int i,j=0,k,n;
    scanf("%d",&n);
    for(i=0;i<n;i++){   //循环挨个检测
        scanf("%d",&k);
        if(k!=0){  //非0时
            if(j<10){   //栈未满时
                store[j]=k;  //入栈操作
                j++;
            }
            else{  //栈满了输出FULL
                printf("FULL ");
            }
        }
        else{   //为0时
            if(j-1>=0){   //栈未空时
                printf("%d ",store[j-1]);   //出栈操作
                store[j-1]=0;
                j--;
            }
            else{   //栈空时输出EMPTY
                printf("EMPTY ");
            }
        }
    }
    printf("\n");   //完成上述操作后输出栈内剩余的数字
    for(i=0;i<j;i++){
        printf("%d ",store[i]);
    }
}

代码写的比较烂,基本是奔着解题去的。

以后再改吧。

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
是一种常见的数据结构,可以用数组或链表来实现。下面是关于基本操作: 1. 初始:最开始为空,需要创建一个空的。 2. 压操作:将数据元素放入顶。压操作可以通过将数据元素插入数组或链表的头部来实现。假设的容量是固定的,当已满时无法进行压操作。 3. 弹操作:从顶取出一个数据元素。弹操作可以通过删除数组或链表的头部元素来实现。假设为空时无法进行弹操作。 4. 获取顶元素:可以通过返回数组或链表的头部元素来获取顶元素,而不对进行修改。 5. 判断是否为空:可以通过判断数组或链表的大小来确定是否为空。 6. 判断是否已满:如果使用数组实现,可以通过判断数组的大小和的容量来确定是否已满。 的实现方式有很多种,其中最常见的两种是使用数组和使用链表。使用数组实现的优点是访问元素速度快,但缺点是容量固定;使用链表实现的优点是容量可以动态调整,但访问元素速度较慢。 在进行操作时,需要注意的边界条件,如压操作是否已满,弹操作是否为空。如果为空,进行弹操作会导致错误;如果已满,进行压操作也会导致错误。 可以用于很多场景,如函数调用、表达式求值、括号匹配等。通过对的理解和灵活应用,可以解决很多实际问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值