实现一个栈

24 篇文章 0 订阅

描述
请你实现一个栈。
操作:
push x:将 加x\x 入栈,保证 x\x 为 int 型整数。
pop:输出栈顶,并让栈顶出栈
top:输出栈顶,栈顶不出栈
输入描述:
第一行为一个正整数 n\n ,代表操作次数。(1 \leq n \leq 100000)(1≤n≤100000)
接下来的 n\n ,每行为一个字符串,代表一个操作。保证操作是题目描述中三种中的一种。

输出描述:
如果操作为push,则不输出任何东西。
如果为另外两种,若栈为空,则输出 "error“
否则按对应操作输出。
示例1
输入:
6
push 1
pop
top
push 2
push 3
pop

输出:
1
error
3

import java.util.*;
class Stack1{
    
    int[] data;
    int size =0;
    int maxSize;
    int top = 0;
    
    public Stack1(int maxSize){
        
        this.maxSize = maxSize;
        this.data = new int[maxSize];
        
    }
    public void push(int val)
    {
        if(this.size == this.maxSize){
            System.out.println("error");
        }else{
            data[top++]=val;
            this.size++;
        }           
    }        
    public void top(){      
        if(this.size == 0){    
            System.out.println("error");            
        }else {            
            System.out.println(data[top-1]);
        }     
    }
    public void pop(){
        
        if(this.size == 0){
            
            System.out.println("error");
            
        }else{
            System.out.println(data[--top]);
            size--;
            
        }  
       } 
    }
    public class Main{
       public static void main(String...args) {
        
           Scanner scan = new Scanner(System.in);
           int n = Integer.parseInt(scan.nextLine());
           Stack1 s = new Stack1(n);
           while(scan.hasNextLine()){
           
               String str = scan.nextLine();
               String arr[] = str.split(" ");
               if(arr[0].equals("push")){          
                   s.push(Integer.parseInt(arr[1]));                  
               }else if(arr[0].equals("pop")){
                   s.pop();
               }else{
                   s.top();
               }             
         }      
    }
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十三幺Shisanyao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值