亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么要使用“ node.getNext()== null”作為已失效節點的約定?

為什么要使用“ node.getNext()== null”作為已失效節點的約定?

素胚勾勒不出你 2021-04-09 14:11:44
這是《 Java中的數據結構和算法》(第六版)一書中的代碼片段。該方法是LinkedPositionalList實現的一部分。我不確切了解這行的含義:“ if(node.getNext()== null)//已失效節點的約定”是針對的。我希望對其功能進行一些解釋。// private utilities/** Validates the position and returns it as a node. */private Node<E> validate(Position<E> p) throws IllegalArgumentException { if (!(p instanceof Node)) throw new IllegalArgumentException("Invalid p");Node<E> node = (Node<E>) p; // safe castif (node.getNext( ) == null) // convention for defunct node    throw new IllegalArgumentException("p is no longer in the list");return node;}
查看完整描述

3 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

在這種情況下,失效節點表示不存在的節點。

if (node.getNext( ) == null) // convention for defunct node

在這種情況下,該節點p有一個稱為的方法,該方法getNext()可以返回null,如果返回,則表示它是節點的最后一個。換句話說,沒有下一個節點。

顧名思義,這種結構相互鏈接。getNext()應該在內存中返回下一個節點的位置,如果該位置不存在,則那里不存在任何節點。

通常node可能會有一個稱為setNext(Position<E> next)this的方法,該方法為該節點保存下一個項目的位置。


查看完整回答
反對 回復 2021-04-14
?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

如果您讀過這本書,第7章的“雙向鏈接列表實現”部分將說明由于消除了列表中任何已刪除的位置(節點)而導致的無效位置概念。因為該remove()方法實現了將要刪除的位置設置為null值。


因此,該validate()方法實際上檢查輸入位置是否未從列表中刪除。再次,通過檢查調用getNext()是否會帶來null價值。如果是這樣,則必須null使用該remove()方法將其設置為已刪除位置。因此,由于輸入位置p不再在列表中(因為它是已刪除的位置),因此將引發錯誤。


為了更好地理解,只需參考本書中的delete()方法即可。這是書中的內容:


// Removes the element stored at Position p and returns it (invalidating p).

public E remove(Position<E> p) throws IllegalArgumentException {

  Node<E> node = validate(p);

  Node<E> predecessor = node.getPrev();

  Node<E> successor = node.getNext();

  predecessor.setNext(successor);

  successor.setPrev(predecessor);

  size??;

  E answer = node.getElement();

  node.setElement(null);          // help with garbage collection

  node.setNext(null);             // and convention for defunct node

  node.setPrev(null);

  return answer;

}


查看完整回答
反對 回復 2021-04-14
  • 3 回答
  • 0 關注
  • 348 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號