理解链表(Java)
有人能告诉我我是否正确吗?我正在准备期中考试 x是一个指向链表节点的变量,而不是列表上的最后一个节点 列表t指向不在列表中的新节点理解链表(Java),java,data-structures,linked-list,Java,Data Structures,Linked List,有人能告诉我我是否正确吗?我正在准备期中考试 x是一个指向链表节点的变量,而不是列表上的最后一个节点 列表t指向不在列表中的新节点 x.next = t; t.next = x.next; 我相信当更新t.next时,x.next不再是x之后的原始节点,而是t本身。所以它会在列表中创建一个循环 t = x.next x = t; 我相信这对名单没有任何影响 x.next = t; t.next = x.next; 提前谢谢你 在这种情况下,将节点存储在temp变量中。它不会创建循环
x.next = t;
t.next = x.next;
我相信当更新t.next时,x.next不再是x之后的原始节点,而是t本身。所以它会在列表中创建一个循环
t = x.next
x = t;
我相信这对名单没有任何影响
x.next = t;
t.next = x.next;
提前谢谢你 在这种情况下,将节点存储在
temp
变量中。它不会创建循环
Object temp = x.next;
x.next = t;
t.next = temp;
首先,你有这样的清单
X--->Y----->Z-->
您想在X
之后插入节点t
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
现在t
t---->null
第1步-现在我们有temp
指向X的下一步
x---->y----->z----->
^
|
temp--
第2步-现在x的下一步指向t
x----->t---->
现在主列表是这样的
temp---->y---->z---->
第3步-现在t的下一步指向的是温度,它只是next
指针
temp---->y--->z---->
^
|
----------
|
x---->t---
所以结果列表是
x--->t---->y---->z----->
您还可以像这样执行线程安全:
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)
您已经有了对象
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
输出:
0
1
1
你想干什么?在列表中插入t?你想在x之前还是在x之后插入它?我相信当更新t.next时,x.next不再是x之后的原始节点,而是t本身。所以它在列表中创建了一个循环,请展开它如果这是插入t的代码,那么第一个代码片段确实是错误的
t.next=x.net
应该先做。看看我在@Eran上的另一篇帖子,因为它不是一个双链接列表,他只能在x
之后插入新节点t
。因此,在我的例子中,如果它没有创建循环,它对列表没有任何作用?“它对列表没有任何作用???”你能解释更多吗,您正在使用列表讨论什么类型的更改?上述方法将仅在x
之后插入节点,直到代码片段的效果为止。对于instancet.next=x.next;x、 next=t;这将在x之后插入节点t。我不相信我的代码会达到同样的效果?