数据结构-----栈的实现

来源:互联网 发布:淘宝电脑主机便宜原因 编辑:程序博客网 时间:2024/05/21 19:42

1、定义数据元素类 Data

package stack;public class Data {int stuId;  //学生IDString stuName;  //学生姓名public Data(int stuId, String stuName) {super();this.stuId = stuId;this.stuName = stuName;}@Overridepublic String toString() {return "stuId=" + stuId + ", stuName=" + stuName ;}}
2、定义栈结构类  StackType

package stack;public class StackType {static final int MAX_SIZE = 50; Data[] data = new Data[MAX_SIZE]; int top;public StackType(){this.top = -1;  //初始化栈顶}/** * 判断是否空栈 * @return */public boolean stackIsEmpty(StackType st){return st.top==-1;}/** * 判断是否满栈 * 当栈顶引用值为MAX_SIZE-1时表示满栈了 * @param st * @return */public boolean stackIsFull(StackType st){return st.top==MAX_SIZE-1;}/** * 清空栈 * 栈顶引用值为-1表示一个空栈 * @param st *  */public boolean stackClear(StackType st){if(st!=null){st.top = -1;return true;}return false;}/** * 释放栈 * @param st */public void stackFree(StackType st){if(st!=null){st = null;System.out.println("栈已释放");}}/** * 入栈 * @param st * @param data * @return */public boolean stackPush(StackType st,Data data){if(st.top>=MAX_SIZE-1){System.out.println("栈溢出,入栈失败!");return false;}st.data[++st.top] = data;return true;}/** * 出栈 * @param st * @return */public Data stackPop(StackType st){Data data;if(st.top==-1){System.out.println("栈为空");return null;}data = st.data[st.top--];return data;}/** * 读栈顶的元素 * @param st * @return */public Data stackPeek(StackType st){if(st.top==-1){System.out.println("栈为空");return null;}return st.data[st.top];}}
3、测试类  TestStack

package stack;public class TestStack {public static void main(String[] args) {StackType st = new StackType();for(int i=1;i<=50;i++){Data data= new Data(i,String.valueOf(i));st.stackPush(st, data);}System.out.println("栈是否为空?"+st.stackIsEmpty(st));System.out.println("栈是否已满?"+st.stackIsFull(st));System.out.println("栈顶元素:"+st.stackPeek(st));System.out.println("出栈:"+st.stackPop(st));System.out.println("出栈:"+st.stackPop(st));System.out.println("栈顶元素:"+st.stackPeek(st));System.out.println("清空栈:"+st.stackClear(st));System.out.println("将栈清空后再出栈:"+st.stackPop(st));st.stackFree(st);}}

4、测试结果



0 0
原创粉丝点击