//栈的抽象类
package org.lina.stack;
public interface StackADT {
public void push(Object element);//进栈
public Object pop();//出栈
public int size();//栈的大小
public Boolean full();//是否是满栈
public Boolean empty();//是否是空栈
public void print();
}
//栈的实现
package org.lina.stack;
public class ArrayStack implements StackADT{
private Object[] contents;
private int top;//标记下一个入栈的位置,同时也表示栈的容量的大小
private int SIZE=10;
public ArrayStack(){
contents=new Object[SIZE];
top=0;
}
public void push(Object element) {
// TODO Auto-generated method stub
//需要先判断栈是否已满
if(full()){
System.out.println("sorry,栈已满!");
}else{
contents[top++]=element;
}
}
@Override
public Object pop() {
// TODO Auto-generated method stub
if(empty()){
System.out.println("sorry,栈为空!");
return null;
}else{
return contents[--top];
}
}
@Override
public int size() {
// TODO Auto-generated method stub
return top;
}
public Boolean full() {
// TODO Auto-generated method stub
if(top==SIZE) return true;
else return false;
}
@Override
public Boolean empty() {
// TODO Auto-generated method stub
if(top==0) return true;
else return false;
}
@Override
public void print() {
// TODO Auto-generated method stub
for(int i=0 ;i<top;i++){
System.out.println("栈的第" + (i+1) + "个元素为:"+contents[i]);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayStack arrayStack = new ArrayStack();
System.out.println("将0到9依次压栈,然后连续5次出栈");
for(int i=0;i<10;i++){
arrayStack.push(i);
}
for(int i=0;i<5;i++){
arrayStack.pop();
}
System.out.println("栈的大小为:" + arrayStack.size());
arrayStack.print();
System.out.println("栈为空吗?: " + arrayStack.empty());
System.out.println("栈满了吗?: " + arrayStack.full());
}
}
编写一个类,实现简单的栈操作。数据的操作按先进后出的顺序。成员函数为pop; push; size; full; empty; print等等
最新推荐文章于 2022-10-13 21:58:30 发布