java - 交换单链表的最后两个节点

标签 java linked-list

如何交换链表的最后两个节点?我正在尝试使用辅助节点,因为我认为需要它来避免在此过程中“丢失”节点...

...
Node node3 = new Node("Hi", null) ;
Node node4 = new Node("Hello", null) ;
...

// swap node3 & node4
Node temp = node3.succ ;
node3.succ = null ; // this should be the last node now, so i set its pointer to null
node2.succ = temp ; // the second's node successor becomes what used to be the last node
temp = node4 ; // not sure how to use temp here. what should it point to if at anything?

我认为我做错了,有什么提示吗?

最佳答案

假设你有一个链表 A -> B -> C,你想交换 BC:

  1. 设置 T* = B(将 B 存储在某处)
  2. 设置A.next = C
  3. 设置 T*.next = C.next(这从仅对列表末尾进行操作概括了这一点)
  4. 设置C.next = T*

关于java - 交换单链表的最后两个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5293222/

相关文章:

c - 在C中按字母顺序插入链表

c++ - 循环链表算法

java - 在 Java 的单例类中使用 "this"还是不使用它?

java - 如何获取链表的头?

C:带有链表实现的奇怪的段错误

java - 创建自定义搜索栏

c - 释放链表中的节点

java - 如何使用 Regex 仅删除单词之间的空格而不删除数字或特殊字符之间的空格?

java - Java Web 应用程序中的 manifest.txt 文件的用途是什么?

java - 解密 AES/CBC/PKCS5Padding 错误 : Given final block not properly padded