利用接口的基本知识,实现一个整数栈的基本运算。
import java.io.*; import java.awt.*; import java.awt.event.*; interface IntStackinterface{//定义栈的接口 final int maxsize=100; void initStack(); boolean push(int x); int pop(); boolean empty(); boolean full(); } class IntStack implements IntStackinterface{//定义栈类,该类实现了栈接口 int data[]; int top; IntStack(){//无参构造函数 data=new int[maxsize]; } public void initStack(){//初始化空栈 top=-1; } public boolean push(int x){//入栈运算 if(!full()){ data[++top]=x; return true; } else return false; } public int pop(){//出栈运算 if(!empty()){ top--; return data[top+1]; } else return 0; } public boolean empty(){//判断空运算 return top==-1; } public boolean full(){//判断满运算 return top==maxsize-1; } } public class StackDemo{ public static void main(String args[])throws IOException{ IntStack s=new IntStack(); s.initStack(); System.out.println("整数栈的基本运算及其运算序号如下:"); System.out.println(" 1:初始化栈"); System.out.println(" 2:入栈"); System.out.println(" 3:栈输出"); System.out.println(" 4:出栈"); System.out.println(" 0:结束程序并退出"); System.out.println(""); int num,k,p; String str; BufferedReader buf; buf=new BufferedReader(new InputStreamReader(System.in)); do{ do{ System.out.println("input an integer(运算符号0-4):"); str=buf.readLine();//将输入的文字指定给字符串变量str存放 k=Integer.parseInt(str);//将str转成int类型后指定给k存放 }while(!(k<=4&&k>=0)); switch(k){ case 0 ://存放 return; case 1://初始化栈 s.initStack();break; case 2://入栈 while(true){ System.out.print("input an integer(元素end 0):"); str=buf.readLine();//将输入的文字指定给字符串变量str存放 num=Integer.parseInt(str);//将str转成int类型后指定给num存放 if(num!=0){//非0元素入栈 s.push(num); System.out.println("元素"+num+"入栈"); } else{//0元素不能入栈 System.out.println("元素"+num+"不能入栈"); break; } } break; case 3://输出栈的元素 p=s.top; if(p==-1)System.out.println("栈空"); System.out.println("栈内元素如下:"); while(p!=-1){ System.out.println(s.data[p]); p--; } break; case 4://chu栈 System.out.println("元素"+s.pop()+"出栈"); break; } }while(k<=4&&k>=0); } }