栈的基本运算

利用接口的基本知识,实现一个整数栈的基本运算。

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);
    }
}

原文地址:https://www.cnblogs.com/ljs-666/p/7837434.html