[英]Understanding linked lists (Java)
有人可以告訴我我是否正確嗎? 我正在學期中。
x是指向鏈表節點的變量,而不是鏈表中的最后一個節點。 t指向不在列表中的新節點。
x.next = t;
t.next = x.next;
我相信當需要更新t.next時,x.next不再是x之后的原始節點,而是t本身。 因此它在列表中創建一個循環
t = x.next
x = t;
我相信這對列表沒有任何幫助。
先感謝您!!
您也可以這樣進行線程安全:
t.next = x.next; // let t and x point to the SAME next.
x.next = t; // change the x.next to t(who has the old next)
在這種情況下,將節點存儲在temp
變量中。 它不會創建周期。
Object temp = x.next;
x.next = t;
t.next = temp;
首先,您有這樣的列表。
X--->Y----->Z-->
您想在X
之后插入節點t
現在t
是
t---->null
步驟1-現在,我們temp
指向X的下一個
x---->y----->z----->
^
|
temp--
步驟2-現在x的下一個指向t
x----->t---->
現在主列表是這樣的
temp---->y---->z---->
步驟3-現在t的下一個指向溫度,temp是僅next
指針
temp---->y--->z---->
^
|
----------
|
x---->t---
所以結果列表是
x--->t---->y---->z----->
您已經有對象x
。 這可能是鏈表的當前最后一個元素。 現在,您創建一個新對象T
並將其鏈接為X
之后的元素
X // Lets assume X.next == NULL. So linked list looks like this X -> Null
X.next = T // Now X.next == T and T.Next == NULL, So linked list looks like this X -> T -> Null.
T.next = X.next // Now T.next == T. So linked list is X -> T <->T
這樣,當您到達鏈接列表的末尾時,它將始終返回最后一個元素,而不是返回NULL
。
如果要為此編寫簡單的算法,則首先必須創建一個元素,然后將其next
變量指向其自身。 <First_element>.next = <First_element>
。 因此,該邏輯將適用於所有實例。
這是一個簡單的實驗。
class Node{
Node next = null;
int id =-1;
}
public class LinkedList{
public static void main (String args[]){
Node x = new Node();
x.id = 0;
x.next = x;
// Now add a new element
Node t = new Node();
t.id =1;
x.next = t;
t.next = x.next; // Now we have a linked list of 2 elements
Node mynode = x;//First element of linked list
for(int i =0; i < 3; i++){
System.out.println(mynode.id);
mynode = mynode.next;
}
}
}
輸出:
0
1
1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.