java栈的实现有两种方式:
一.使用数组来实现:
//使用数组实现栈,功能包括进行内存扩展public class Stack { private int []data; private int length;//表示初始化栈的内存长度 private int top;//用来表示栈的实际长度 private final int expandLength=20;//表示扩展的长度 public Stack(int length){ this.length=length; top=-1;//初始化为-1 data=new int[length]; } //压栈 public void push(int value){ if(top
二.使用数组线性表来实现栈:
//使用线性表实现栈的存储,这样不需要考虑内存扩展的情况import java.util.*;public class linkedStack{ private LinkedList Linkedlist;//定义一个线性表 public linkedStack(){ Linkedlist=new LinkedList (); } //压栈 public void push(T value){ Linkedlist.add(value); } //出栈 public T pop(){ T data=Linkedlist.get(getLength()-1); Linkedlist.remove(getLength()-1); return data; } //得到栈头元素 public T peek(){ return Linkedlist.get(Linkedlist.size()-1); } //栈的长度 public int getLength(){ return Linkedlist.size(); }}
就我个人而言,我更喜欢第二种实现方法,第二种可以自己定义所要存储的数据类型,有人会说为啥第一种方法不用泛型,我有试过,但是会非常麻烦。首先泛型对数组的定义本来就要限制,所以综合考虑,本人就在第一种方法中简化了,定义数据类型为int类型.如果大家有更好的方法,希望能提出,相互提高,这里仅仅表明我个人的想法。