abstract class Istackint MAX_SIZE = 5; 最大栈长度。为5表示栈中最大容纳5个元素public abstract boolean pushint data; 元素进栈如果栈满返回falsepublic abstract int pop; 从栈中取数据。如果栈已为空返回IntegerMIN_VALUEpublic abstract boolean isEmpty;
public class Stack extends Istack{ private int[] data; //栈中存储数据的数组 private int top; //栈顶指针,指向栈顶元素的下标
public Stack(){
data = new int[MAX_SIZE]; //初始化数组大小
top = -1; //栈顶指针初始化为-1,表示栈为空
}
@Override
public boolean push(int data) {
if(top == MAX_SIZE-1){ //判断栈是否已满
return false;
}
this.data[++top] = data; //栈顶指针加1,并将元素存入栈中
return true;
}
@Override
public int pop() {
if(top == -1){ //判断栈是否为空
return Integer.MIN_VALUE;
}
int result = this.data[top--]; //取出栈顶元素,并将栈顶指针减1
return result;
}
@Override
public boolean isEmpty() {
return (top == -1); //判断栈是否为空
}
@Override
public void display() {
if(isEmpty()){
System.out.println("栈为空");
}else{
System.out.print("栈中元素有:");
for(int i=0; i<=top; i++){
System.out.print(this.data[i] + " ");
}
System.out.println();
}
}
}
//测试代码 public static void main(String[] args) { System.out.println("栈测试开始"); Stack stack = new Stack(); int v = stack.pop(); if(v == Integer.MIN_VALUE){ System.out.println("弹出失败,栈为空"); }else{ System.out.println("弹出数据为:" + v); } stack.display(); stack.push(1); stack.push(2); stack.push(3); stack.push(4); stack.push(5); if(!stack.push(6)){ System.out.println("压栈失败,栈已满。失败的数据为:6"); stack.display(); } for(int i=0; ; i++){ if(stack.isEmpty()) break; System.out.println(i + ". 弹出元素为:" + stack.pop()); stack.display(); } System.out.println("栈测试结束");
原文地址: https://www.cveoy.top/t/topic/eeex 著作权归作者所有。请勿转载和采集!