package 栈;/*
* 栈就是特殊的线性表。
*/publicinterfaceStack<E>{publicintgetSize();publicbooleanisEmpty();publicvoidpush(E e);//进栈public E pop();//弹栈public E peek();//出栈publicvoidclear();}
二
package 栈;import 栈.Stack;import 顺序表.ArrayList;;/*
* 顺序栈和顺序表很像,当顺序表对表尾进行操作的时候,就叫顺序栈,
* 对一端进行操作,可以用顺序表进行拓展。
* 栈是先进后出。
* 顺序栈栈也是一种特殊的线性表,是有限的序列。
*/publicclassArrayStack<E>implementsStack<E>{private ArrayList<E> list;publicArrayStack(){this(10);}publicArrayStack(int capacity){
list =newArrayList<>(capacity);}@OverridepublicintgetSize(){// TODO Auto-generated method stubreturn list.getSize();}@OverridepublicbooleanisEmpty(){// TODO Auto-generated method stubreturn list.isEmpty();}@Overridepublicvoidpush(E e){// TODO Auto-generated method stub
list.addLast(e);}@Overridepublic E pop(){// TODO Auto-generated method stubreturn list.removeLast();}@Overridepublic E peek(){// 查询栈顶元素// TODO Auto-generated method stubreturn list.getLast();}@Overridepublicvoidclear(){// TODO Auto-generated method stub
list.clear();}// 定义成员函数publicintgetCapacity(){return list.getCapacity();}@Overridepublic String toString(){// TODO Auto-generated method stub
StringBuilder str =newStringBuilder();if(isEmpty()){
str.append(String.format("顺序栈:bottom[]top***%d/%d\n", list.getSize(), list.getCapacity()));}else{
str.append("顺序栈:bottom[");for(int i =0; i < list.getSize(); i++){if(i != list.getSize()-1){
str.append(list.get(i)+",");}else{
str.append(list.get(i)+"]top");}}
str.append(String.format("***%d/%d\n", list.getSize(), list.getCapacity()));}return str.toString();}}