package 数据结构.栈;//以数组定义栈体——静态栈的实现classStrack{//该栈最大空间为100int[] strack =newint[100];//top为最顶端层数加1,top从零开始int top;Strack(){//定义一个索引变量,表示栈顶指针int top =0;}//显示栈的元素publicvoidshow(){for(int i =0; i < top; i++){System.out.print(strack[i]);System.out.print(' ');}System.out.println();return;}//进栈操作publicvoidappend(int i){
strack[top]= i;
top +=1;return;}//退栈操作publicintpop(){int x = strack[top-1];
strack[top]=0;
top -=1;return x;}}publicclass 栈的实现 {publicstaticvoidmain(String[] args){Strack k =newStrack();
k.append(10);
k.append(20);
k.append(30);
k.show();int y = k.pop();System.out.println("退出的元素为:"+y);
k.show();}}
动态栈的实现
package 数据结构.栈;//用双链表构造的栈体——动态栈/*构造链表*///先构造链表节点class link {int i;
link next;link(int i){this.i = i;this.next =null;}@OverridepublicStringtoString(){return i+" ";}}//构造栈classStrack_D{//构造栈顶指针——该指针一直指向顶层
link top;Strack_D(){
top =null;}//进栈操作voidappend(int x){//new新节点
link N=newlink(x);//将N压入栈顶:N的next指向上一个节点,更新top——top指向N,动态替换的过程N.next = top;
top =N;}//退栈操作intpop(){//将栈顶元素删除——top指向下一个节点,并返回栈顶元素值int x = top.i;
top = top.next;return x;}//显示操作voidshow(){if(top==null){System.out.println("栈为空栈");return;}
link team = top;//遍历输出节点,知道next==nullwhile(true){if(team ==null){break;}System.out.print(team);
team = team.next;}System.out.println();}}publicclass 栈的实现_动态栈 {publicstaticvoidmain(String[] args){Strack_D j =newStrack_D();
j.append(10);
j.append(20);
j.append(30);
j.show();int y = j.pop();System.out.println("退出的元素为:"+ y);int x = j.pop();System.out.println("退出的元素为:"+ x);System.out.println("剩余元素:");
j.show();}}