在Java中使用鏈接列表實現堆棧的最佳方式是什麼?使用鏈接列表實現堆棧
編輯:我會定義最乾淨的代碼使用最有效。我已經使用數組來實現堆棧,但我不熟悉的鏈接列表,以便在想,如果有人可以幫助我實現一些類似下面:
public class StackArray{
private Object [] objArray;
private int stackSize;
public StackArray(){
objArray = new Object[50];
stackSize = 0;
}
public StackArray(int size){
objArray = new Object[size];
stackSize = 0;
}
//public interface methods - push, pop, top, empty & clear
public void push(Object o)throws StackArrayException{
if(stackSize < objArray.length){
objArray[stackSize] = o;
stackSize ++;
}else{
throw new StackArrayException("Stack Overflow");
}
}
public Object pop()throws StackArrayException{
if(stackSize != 0){
stackSize--;
return(objArray[stackSize]);
}else{
throw new StackArrayException("Stack Underflow");
}
}
public void top() throws StackArrayException{
if(stackSize != 0){
return(objArray[stackSize-1]);
}else{
throw new StackArrayException("Stack Underflow");
}
}
public boolean empty(){
return (stackSize == 0):
}
public void clear(){
stackSize = 0;
}
}
編輯:這裏是鏈表實現若有人有興趣..
public class StackList{
private Node listHead;
protected class Node{
protected Object datum;
protected Node next;
public Node(Object o, Node n){
datum = o;
next = n;
}
public StackList(){
listHead = null;
}
//public interface methods - push pop top empty clear
public void push(Object o){
listHead = new Node(o, listHead);
}
public Object pop() throws StackListException{
if(listHead!=null){
Object top = listHead.datum;
listHead = listHead.next;
return top;
}else{
throw new StackListException("Stack Underflow");
}
}
public Object top()throws StackListException{
if(listHead != null){
return(listHead.datum);
}else{
throw new StackListException("Stack Underflow");
}
}
public boolean empty(){
return (listHead == null);
}
public void clear(){
listHead = null;
}
}
定義「最佳」!你測量什麼質量?發展時間?清潔代碼?運行時性能?內存使用情況? 「當我把作業作爲家庭作業時,我得到了分數」?優雅?每行字符? – 2011-04-05 13:08:37
你想要一個堆棧(又名後進先出/ LIFO)還是一個隊列(先進先出)? – 2011-04-05 13:13:11
正在做作業嗎? – bguiz 2011-04-05 13:28:09