『牛客|数据结构|栈』模板栈

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



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

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

@TOC

『牛客|数据结构|栈』模板栈

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

网络异常,图片无法展示
|

2.测试示例

输入:

6

push 1

pop

top

push 2

push 3

pop

输出:

1

error

3

3.Stack类实现

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

importjava.util.*;

publicclassMain {

   publicstaticvoidmain(String[] args) {

       Scannerscanner=newScanner(System.in);

       intn=scanner.nextInt();

       scanner.nextLine();

       Stringstring;

       Stack<Integer>stack=newStack<Integer>();

       while (n--!=0) {

           string=scanner.nextLine();

           Stringcmp=string.substring(0, 3);

           if (cmp.equals("pus")) {

               inta=Integer.valueOf(string.substring(5, string.length()));

               stack.push(a);

           } elseif (cmp.equals("pop")) {

               if (!stack.isEmpty()) {

                   System.out.println(stack.pop());

               } else {

                   System.out.println("error");

               }

           } elseif (cmp.equals("top")) {

               if (!stack.isEmpty()) {

                   System.out.println(stack.peek());

               } else {

                   System.out.println("error");

               }

           }

 

       }

   }

}

4.数组实现栈

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

 

importjava.util.*;

publicclassMain{

   publicstaticvoidmain(String[] args){

       Scannerscanner=newScanner(System.in);

       intn=scanner.nextInt();

       scanner.nextLine();

       Stringstring;

       MyStackstack=newMyStack(n+1);

       while(n--!=0){

           string=scanner.nextLine();

           Stringcmp=string.substring(0,3);

           if(cmp.equals("pus")){

               inta=Integer.valueOf(string.substring(5,6));

               stack.push(a);

           }elseif(cmp.equals("pop")){

               stack.pop();

           }elseif(cmp.equals("top")){

               stack.peek();

           }

       }

       scanner.close();

   }

}

 

classMyStack{

    int[] data;//用数组实现栈

    intmaxSize;//栈的容量

    inttop=-1;//栈顶指针-栈中元素个数

   

    //构造函数

    publicMyStack(intmaxSize) {

        this.maxSize=maxSize;//预先指定栈大小

        this.data=newint[maxSize];//初始化栈空间

    }

    //入栈

    publicvoidpush(intval) {

        if(this.top==this.maxSize) {//栈满-栈中的元素个数等于栈的容量

            System.out.println("error");

        }else {

            //栈没满,移动栈顶指针,加入新元素

            data[++this.top]=val;

        }

    }

    //出栈操作

    publicvoidpop() {

        //栈空-栈中的元素为0

        if(this.isEmpty()) {

            System.out.println("error");

        }else {

            //栈不空,打印栈顶元素,栈顶指针下移

            System.out.println(data[this.top--]);

        }

    }

    //打印栈顶元素

    publicvoidpeek() {

        //栈空-栈中的元素为0

        if(this.isEmpty()) {

            System.out.println("error");

        }else {

            //栈不空,打印栈顶元素

            System.out.println(data[this.top]);

        }

    }

   

    //栈的判空

    publicbooleanisEmpty() {

        if(this.top==-1) {

            returntrue;

        }else {

            returnfalse;

        }

    }

}

网络异常,图片无法展示
|

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

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

相关文章
|
23天前
|
存储 算法 搜索推荐
探索常见数据结构:数组、链表、栈、队列、树和图
探索常见数据结构:数组、链表、栈、队列、树和图
84 64
|
15天前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
17 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
15天前
初步认识栈和队列
初步认识栈和队列
40 10
|
9天前
数据结构(栈与列队)
数据结构(栈与列队)
13 1
|
2月前
|
算法 安全 测试技术
golang 栈数据结构的实现和应用
本文详细介绍了“栈”这一数据结构的特点,并用Golang实现栈。栈是一种FILO(First In Last Out,即先进后出或后进先出)的数据结构。文章展示了如何用slice和链表来实现栈,并通过golang benchmark测试了二者的性能差异。此外,还提供了几个使用栈结构解决的实际算法问题示例,如有效的括号匹配等。
golang 栈数据结构的实现和应用
|
15天前
|
算法
数据结构与算法二:栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式
这篇文章讲解了栈的基本概念及其应用,并详细介绍了中缀表达式转换为后缀表达式的算法和实现步骤。
31 3
|
14天前
|
存储 JavaScript 前端开发
为什么基础数据类型存放在栈中,而引用数据类型存放在堆中?
为什么基础数据类型存放在栈中,而引用数据类型存放在堆中?
52 1
|
17天前
|
存储 安全 Java
【用Java学习数据结构系列】探索栈和队列的无尽秘密
【用Java学习数据结构系列】探索栈和队列的无尽秘密
26 2
|
22天前
|
Go
数据结构之 - 深入了解栈数据结构
数据结构之 - 深入了解栈数据结构
21 5
【数据结构】--- 栈和队列
【数据结构】--- 栈和队列