java - 交换循环链表节点

标签 java

基本上我必须将循环链表中的一组节点移动到同一链表中的不同位置。

      prev  ptr

[1]-->[2]-->[3]-->[4]
<--------------------
假设我想在 3 和 4 之间移动 1 和 2,然后让 4 圈回到 3。 我有指向 1 (temp1)、3 (temp3) 和 4 (temp4) 的临时指针。 我认为这些是操作的重要指针,因此我为它们设置了温度。

如何设置 prev 和 ptr 指针以与 temp 指针协调? 这非常令人困惑,我将任何组合放在一起并尝试打印列表, 它会让我陷入无限循环。我想了解一种精确的接近方法 这。谢谢。

最佳答案

将操作视为两个不同的操作可能更容易。删除,然后插入。

// remove the node
Node node = ...; // whatever identifies the node to operate on
prev(node).setNext(next(node));

// insert it into its new position
Node newPrev = ...; // whatever identifies the node to operate on
Node newNext = newPrev.next();
newPrev.setNext(node);
node.setNext(newNext);

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

相关文章:

java - 如何传递 java.lang.reflect.Array.newInstance 的泛型类型?

java - 更快的 CPU 不会提高性能,而增加线程数会。业内最好的共享内存计算机?

java - 在一个存储库中推送多个 netbeans 项目

java - Json 不适用于指定的 URL

java - 将 std::unique_ptr 传递给 JNI

java - Canvas 中同一动画 GIF 的多个实例 (Java)

java - 从 MySQL 数据库获取时抛出 TransactionSystemException | java.lang.OutOfMemory错误: Java heap space

java - 输出最终对象的 JVM 选项

Java HashMap - 从 HashMap 获取值,用户输入

java - 为什么这个 SimpleDateFormat 不能解析这个日期字符串?