理解链表(Java)

理解链表(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是一个指向链表节点的变量,而不是列表上的最后一个节点 列表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
变量中。它不会创建循环

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。我不相信我的代码会达到同样的效果?