第二天了,我又来了,今天来实现以下数组模拟栈,栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
栈作为一种重要的数据结构,在日常生活中也有很多需要,今天就来实现一下吧
一、要求
1、通过数组模拟栈
2、实现压栈,弹栈,查看栈的元素,判断是否为空栈,满栈。
3、测试栈
public class ArrayStaCK {
/**
* 栈的大小
*/
private int maxStack;
/**
* 数组来模拟栈
*/
private int[] stack;
/**
* 表示栈顶所在位置,默认情况下如果没有数据时,使用-1
*/
private int top=-1;
public ArrayStaCK(int maxStack) {
this.maxStack = maxStack;
stack=new int[maxStack];
}
/**
* 1、压栈
* 2、弹栈
* 3、判断是否是空栈
* 4、当前栈是否是满栈
*/
/**
* 判断是否已经满栈
*/
public boolean isFull(){
return top==maxStack-1;
}
/**
* 栈是否为空栈
*/
public boolean isEmpty(){
return top==-1;
}
/**
* 压栈
*/
public void push(int val){
if (isFull()){
throw new RuntimeException("此栈已满");
}else {
top++;
stack[top]=val;
}
}
/**
* 弹栈
*/
public int pop(){
if(isEmpty()){
throw new RuntimeException("空栈,不能弹栈");
}else {
top--;
return stack[top+1];
}
}
/**
* 查看栈中所有元素
*/
public void list(){
if(isEmpty()){
System.out.println("此栈是空栈");
}else {
for (int i=0;i<=top;i++){
System.out.print(stack[i]+" ");
}
}
}
}
接下来就是测试了
public class Test {
public static void main(String[] args) {
ArrayStaCK as=new ArrayStaCK(6);
as.push(1);
as.push(2);
as.push(3);
as.push(4);
as.pop();
as.list();
}
}
测试结果
1 2 3
好了,今天就这些了,总体来说,嗯~,还是蛮不错的,明天继续加油!