publicinterfacestack<T>{booleanisEmpty();//判空voidclear();//清空
T pop();//弹出voidpush(T data);//压入intgetLength();//返回长度
T peek();//返回栈顶值intsearch(T t);//查找元素位置voiddisplay();//输出所有元素}
然后是数组实现方式
import java.util.Objects;/**
* 用数组实现栈
* @param <T>
*/publicclassArrayStack<T>implementsstack<T>{publicArrayStack(){}private T[] array=(T[])newObject[16];privateint size=0;@OverridepublicbooleanisEmpty(){return(size==0);}@Overridepublicvoidclear(){for(int i=0;i<size;i++){
array[i]=null;}
size=0;}@Overridepublic T pop(){if(size==0)return null;else{
T temp=array[size-1];
array[size-1]=null;
size--;return temp;}}@Overridepublicvoidpush(T data){if(size>=array.length){resize();//重新分配两倍大小的内存
array[size++]=data;}else{
array[size++]=data;}}publicvoidresize(){
T[] temp=(T[])newObject[array.length*2];for(int i=0;i<array.length;i++){
temp[i]=array[i];}for(int i=array.length;i<array.length*2;i++){
temp[i]=null;}
array=temp;
temp=null;}@OverridepublicintgetLength(){return size;}@Overridepublic T peek(){if(size==0)return null;elsereturn array[size-1];}@Overridepublicintsearch(T t){for(int i=0;i<size;i++){if(array[i]==t)return i+1;}return0;}@Overridepublicvoiddisplay(){for(int i=0;i<size;i++){
System.out.println("data:"+array[i]);}}publicstaticvoidmain(String[] args){
ArrayStack<String> a =newArrayStack();
a.push("hello,world...");
a.push("my name is: ");
a.push("jeavenwong");
a.display();
System.out.println(a.getLength());
System.out.println(a.peek());
System.out.println(a.pop());}}
然后是链表实现方式
publicclassLinkStack<T>implementsstack<T>{private Node top;//栈顶指针privateint size;//栈的大小classNode{private T data;private Node next;}publicLinkStack(){this.top=null;this.size=0;}@OverridepublicbooleanisEmpty(){return(size==0);}@Overridepublicvoidclear(){
top=null;
size=0;}@Overridepublic T pop(){if(top==null)return null;else{
T popData=top.data;
top=top.next;
size--;return popData;}}@Overridepublicvoidpush(T data){
Node node=newNode();
node.data=data;
node.next=null;if(top==null){
top=node;
node=null;
size++;}else{
node.next=top;
top=node;
node=null;
size++;}}@OverridepublicintgetLength(){return size;}@Overridepublic T peek(){return top.data;}@Overridepublicintsearch(T t){
Node temp=top;int num=size;while(temp!=null){if(temp.data==t)return num;
temp=temp.next;
num--;}return0;}@Overridepublicvoiddisplay(){
Node node=top;while(top!=null){
System.out.println("data:"+top.data);
top=top.next;}
top=node;
node=null;}publicstaticvoidmain(String[] args){
LinkStack<String> b =newLinkStack();
b.push("how are you?");
b.push("i am fine...");
b.push("and you?...");
b.display();
System.out.println(b.peek());
System.out.println(b.getLength());
System.out.println(b.isEmpty());
System.out.println(b.search("i am fine..."));
System.out.println(b.pop());
b.display();
b.clear();
b.display();}}