『牛客|每日一题』模板栈

‍作者简介:一位喜欢写作,计科专业大二菜鸟

个人主页:starry陆离

首发日期:2022年7月13日星期三

上期文章:『首期文章』

订阅专栏:『牛客刷题集锦』

每日推荐:基础算法无论在研究生面试还是求职面试都是十分重要的一环,这里推荐一款算法面试神器:牛客网-面试神器;算法题只有多刷勤刷才能保持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦)
在这里插入图片描述

如果文章有帮到你的话记得点赞+收藏支持一下哦

在这里插入图片描述

『牛客|每日一题』模板栈

  • 1.每日一题:AB1 【模板】栈
  • 2.测试示例
  • 3.Stack类实现
  • 4.数组实现栈

1.每日一题:AB1 【模板】栈

传送门:每日一题:AB1 【模板】栈
『牛客|每日一题』模板栈_第1张图片

2.测试示例

输入:

6
push 1
pop
top
push 2
push 3
pop

输出:

1
error
3

3.Stack类实现

先来个简单的用Java自带的Stack类来实现,这样我们就只需要处理输入和判空即可

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        scanner.nextLine();
        String string;
        Stack<Integer> stack = new Stack<Integer>();
        while (n-- != 0) {
            string = scanner.nextLine();
            String cmp = string.substring(0, 3);
            if (cmp.equals("pus")) {
                int a = Integer.valueOf(string.substring(5, string.length()));
                stack.push(a);
            } else if (cmp.equals("pop")) {
                if (!stack.isEmpty()) {
                    System.out.println(stack.pop());
                } else {
                    System.out.println("error");
                }
            } else if (cmp.equals("top")) {
                if (!stack.isEmpty()) {
                    System.out.println(stack.peek());
                } else {
                    System.out.println("error");
                }
            }

        }
    }
}

4.数组实现栈

用自带的类写没挑战性???那就来自己写一个MyStack类用数组实现栈


import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        scanner.nextLine();
        String string;
        MyStack stack=new MyStack(n+1);
        while(n--!=0){
            string=scanner.nextLine();
            String cmp=string.substring(0,3);
            if(cmp.equals("pus")){
                int a=Integer.valueOf(string.substring(5,6));
                stack.push(a);
            }else if(cmp.equals("pop")){
                stack.pop();
            }else if(cmp.equals("top")){
                stack.peek();
            }
        }
        scanner.close();
    }
}

class MyStack{
	int[] data;//用数组实现栈
	int maxSize;//栈的容量
	int top=-1;//栈顶指针-栈中元素个数
	
	//构造函数
	public MyStack(int maxSize) {
		this.maxSize=maxSize;//预先指定栈大小
		this.data=new int[maxSize];//初始化栈空间
	}
	//入栈
	public void push(int val) {
		if(this.top==this.maxSize) {//栈满-栈中的元素个数等于栈的容量
			System.out.println("error");
		}else {
			//栈没满,移动栈顶指针,加入新元素
			data[++this.top]=val;
		}
	}
	//出栈操作
	public void pop() {
		//栈空-栈中的元素为0
		if(this.isEmpty()) {
			System.out.println("error");
		}else {
			//栈不空,打印栈顶元素,栈顶指针下移
			System.out.println(data[this.top--]);
		}
	}
	//打印栈顶元素
	public void peek() {
		//栈空-栈中的元素为0
		if(this.isEmpty()) {
			System.out.println("error");
		}else {
			//栈不空,打印栈顶元素
			System.out.println(data[this.top]);
		}
	}
	
	//栈的判空
	public boolean isEmpty() {
		if(this.top==-1) {
			return true;
		}else {
			return false;
		}
	}
}

『牛客|每日一题』模板栈_第2张图片

每日推荐:基础算法无论在研究生面试还是求职面试都是十分重要的一环,这里推荐一款算法面试神器:牛客网-面试神器;算法题只有多刷勤刷才能保持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦)
在这里插入图片描述

如果文章有帮到你的话记得点赞+收藏支持一下哦

你可能感兴趣的:(牛客刷题集锦,算法,java,开发语言)