0
我有我的CS類約循環雙向鏈表的分配。我們給了一個Node類來設置鏈接等。理解雙向鏈表循環鏈表
public class Node {
private Node previous, next;
private Object data;
public Node(Object data) {
this.data = data;
}
public Node() {
}
public Node(Object data, Node previous, Node next) {
this.previous = previous;
this.next = next;
this.data = data;
}
public Node getPrevious() {
return previous;
}
public void setPrevious(Node previous) {
this.previous = previous;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
,我們正與執行的一些方法任務。在列表類中有一個創建的名爲'base'的節點
public class DList {
private Node base;
public DList() {
}
所有的方法都需要某種形式的遍歷列表。從我理解的設置一個臨時節點等於base.getNext()將給我的列表的第一個節點,並測試如果temp!= base將我的檢查到達列表的末尾,因爲基節點服務作爲其餘節點的錨(如果我的理解是正確的)。
但是,當我嘗試做的代碼位如:
public int size() {
int count = 0;
if (base.getNext() == base)
return count;
else {
Node temp = base.getNext();
while (temp != base) {
temp = temp.getNext();
count++;
}
}
return count;
}
我得到在該行一個空指針異常,我說的節點溫度= base.getNext();對於我的生活,我無法理解爲什麼,因爲就像我之前說過的,我認爲base.getNext()將是我列表中的第一個元素。
不需要虛擬基節點。在這種情況下,'base'最初爲空。所以'如果base == null ...' –
那麼,基地沒有下一個。它什麼都沒有!我建議你在Node上添加一個「hasNext」方法,這將使你的即將到來的任務變得更容易。 – Tim