嘿。我被分配到使用雙鏈表執行堆棧,並且遇到了問題。我無法鏈接到以前的元素(雖然我沒有使用一個鏈接的問題)。使用雙鏈表的堆棧
class Node
{
Data data;
Node previous;
Node next;
}
class Data
{
int size;
double price;
boolean isOnOffer;
char sex;
String brand;
Data(int size, double price, boolean isOnOffer, char sex, String brand){
this.size = size;
this.price = price;
this.isOnOffer = isOnOffer;
this.sex = sex;
this.brand = brand;
}
}
class Stack
{
private static int sizeOfStack;
private static Node topElement;
public static boolean isEmpty() { return topElement == null; }
public static void Initialize() {
sizeOfStack = 0;
topElement = null;
}
public static void Push(Data x) {
Node oldElement = topElement;
topElement = new Node();
topElement.data = x;
topElement.next = oldElement;
topElement.previous = null;
//oldElement.previous = topElement; // <----- problem here
sizeOfStack++;
}
public static void Pop() {
if (!isEmpty()){
topElement = topElement.next; // delete first node
sizeOfStack--;
}
}
public static void Top() {
int size = topElement.data.size;
double price = topElement.data.price;
boolean isOnOffer = topElement.data.isOnOffer;
char sex = topElement.data.sex;
String brand = topElement.data.brand;
System.out.println(size + " " + price + " " + isOnOffer + " " + sex + " " + brand);
}
public static void Kill() { }
public static void Print() { }
public static void main(String[] args){
Push(new Data(37, 155, false, 'F', "Nike"));
Push(new Data(38, 140, true, 'F', "Reebok"));
Push(new Data(35, 160.99, false, 'F', "Converse"));
Push(new Data(35, 20.99, true, 'F', "Inkaras"));
Pop();
Pop();
Top();
}
}
聽起來有點像家庭作業。如果它是作業標籤它。否則:爲什麼你在java中手動實現鏈表?改用ArrayList。 – Heisenbug 2011-04-04 10:51:15
我會說空引用異常... – forsvarir 2011-04-04 10:59:01
這是沒有辦法檢索頂部元素。 pop()應該返回數據。 – Manoj 2011-04-04 10:59:59