数据结构 栈结构 JAVA

来源:互联网 发布:观澜网络工作怎么样 编辑:程序博客网 时间:2024/05/16 11:31

栈结构的操作简单小实例
元素类

//准备栈中要用到的变量和类    class DATA3    {        String names;        int ages;           }

声明栈

    //创建空栈并初始化class StackType    {        static final int MAXLEN=50; //栈的长度        DATA3[] data=new DATA3[MAXLEN+1];        int top;        //初始化栈         StackType STInit(){             StackType p;             if ((p=new StackType())!=null) {//申请栈的内存                p.top=0;   //设置栈顶为0                return p;   //返回指向栈的引用            }            return null;  //申请失败返回空             }         //判断栈是否为空         boolean STIsEmpty(StackType s){             boolean t;             t=(s.top==0);            return t;             }         //判断栈是否满         boolean STIsFull(StackType s){             boolean t;             t=(s.top==MAXLEN);            return t;                     }         //清空栈         void STClear(StackType s){             s.top=0;         }         //释放栈所占用的空间         void STFree(StackType s){             if (s!=null) {                s=null;            }         }         //入栈操作         int PushST(StackType s,DATA3 data){             if ((s.top+1)>MAXLEN) {                System.out.print("栈溢出!\n");                return 0;            }             s.data[++s.top]=data;            return 1;        }         //出栈操作         DATA3 PopST(StackType s){             if (s.top==0) {                System.out.print("栈为空!\n");                System.exit(0);            }            return s.data[s.top--];        }         //读栈顶数据         DATA3 PeekST(StackType s){             if (s.top==0) {                System.out.printf("栈为空!\n");                System.exit(0);            }            return s.data[s.top];        }    }

测试

import java.util.Scanner;public class Mian {    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub        StackType st=new StackType();        DATA3 data1=new DATA3();        StackType stack=st.STInit();        Scanner sc=new Scanner(System.in);        System.out.println("入栈操作:");        System.out.println("输入姓名,年龄进行入栈操作:");        do {            DATA3 data=new DATA3();            data.names=sc.next();            if (data.names.equals("0")) {                break;                          }            else {                data.ages=sc.nextInt();                st.PushST(stack, data);            }        } while (true);        String temp="1";        System.out.println("按任意非0键进行出栈操作:");        temp=sc.next();        while (!temp.equals("0")) {            data1=st.PopST(stack);            System.out.printf("出栈的数据是(%s,%d)\n",data1.names,data1.ages);            temp=sc.next();                 }        System.out.println("测试结束");        st.STFree(st);    }}片

运行截图
这里写图片描述

0 0