如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦
@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;
}
}
}
如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦