2011-02-08 12 views
1
public void insertIt (Node firstNode, Node newNode) { 
firstNode.next = newNode; 
newNode.next = null; 
} 

我找不到使用.next的類,任何人都可以顯示我嗎?另外,我不太明白這一點。我正在設置firstNode.next=newNode,那麼firstNode如何包含firstNode.next?我希望這是有道理的。關於Java節點的問題,具體使用.next

從我的筆記:

> Example 1 to practice with links: 
> Node node1 = new Node(22); Node node2 
> = new Node(44); firstNode = node1; node1.next = node2; node2.next = null; 
> Produces: 
>  firstNode -> 22 -> 44 -> null So firstNode.data is 22 and 
> firstNode.next.data is 44. Since 
> firstNode.next.next is null, a 
> reference to firstNode.next.next.data 
> is an error. 
> 
> Example 2 to practice with links: What 
> is node3.data ? 
>  node3 -> 99 -> null 
>  Answer: 99 
> 
> Example 3 to practice with links: 
> public void insertIt (Node firstNode, 
> Node newNode) { 
>  firstNode.next = newNode; 
>  newNode.next = null; } 

編輯:如果分配到另一個節點的節點會發生什麼?

例如,頭 - > 2 - > 3 - >空

node1 = node2;

什麼變化?是node1 s值3?還是改變它的參考/指針?

+2

你有什麼不明白? 「Node」類是API的一部分,還是您創建了它? – Davidann 2011-02-08 00:23:25

+0

我很抱歉,但它確實沒有道理。 `next`必須是`Node`類和`Node`類的公共數據成員。 – 2011-02-08 00:27:46

回答

1

看到你的評論後,我想我明白你想要做什麼。此代碼來自LinkedList Data Structure的實現。您應該閱讀維基百科文章,但簡而言之,鏈接列表由Nodes組成,其中包含data元素以及指向列表中下一個元素的指針。正因爲如此,只有知道第一個元素才能遍歷列表。 .next用於訪問相對於當前節點的下一個數據成員。當你插入一個元素,通常需要做這樣的事情:

public void insertNode(Node nodeBefore, Node newNode){ 
    newNode.next = nodeBefore.next; 
    nodeBefore.next = newNode; 
} 

這種方法插入後NodenewNodeNodenodeBefore所以,當你遍歷列表,你達到nodeBefore後到達newNode。通常,由null指針表示的列表的末尾。

編輯爲了解決您的評論,類Node可能看起來是這樣的:

public class Node{ 
    public Node next; 
    public Object data; 
} 

這就是next從何而來。這是Node類的公共數據成員

1

它看起來就像你正在學習鏈表......這種方法本質上增加了一個節點,以這樣的結尾:

firstNode   newNode 
+------+------+ +------+------+ 
| data | next-|--->| data | null | 
+------+------+ +------+------+