小编Tai*_*Tai的帖子

Java:如何实现 Dancing Links 算法(使用 DoublyLinkedLists)?

我正在尝试用 Java 实现 Knuth 的 Dancing Links 算法。

根据 Knuth 的说法,如果x是一个节点,我可以通过 C 中的以下操作完全取消链接节点:

L[R[x]]<-L[x]
R[L[x]]<-R[x]
Run Code Online (Sandbox Code Playgroud)

并通过以下方式恢复取消链接:

L[R[x]]<-x
R[L[x]]<-x
Run Code Online (Sandbox Code Playgroud)

我的主要方法中做错了什么?

Java中如何实现取消链接和恢复?

这是我的主要方法:

      ///////////////

      DoublyLinkedList newList = new DoublyLinkedList();

      for (int i = 0; i < 81; i++) {
        HashSet<Integer> set = new HashSet<Integer>();
        set.add(i);
        newList.addFirst(set);
      }

      newList.displayList();

      // start at 69
      newList.getAt(12).displayNode();

      //HOW TO IMPLEMENT UNLINK?
      //newList.getAt(12).previous() = newList.getAt(12).next().previous().previous();
      //newList.getAt(12).next() = newList.getAt(12).previous().next().next();

      newList.displayList();

      //HOW TO IMPLEMENT REVERT UNLINK?
      //newList.getAt(12) = newList.getAt(12).next().previous();
      //newList.getAt(12) = newList.getAt(12).previous().next();

      System.out.println();

      ///////////////
Run Code Online (Sandbox Code Playgroud)

这是 DoubleLinkedList 类: …

java knuth linked-list nodes doubly-linked-list

5
推荐指数
1
解决办法
1280
查看次数

标签 统计

doubly-linked-list ×1

java ×1

knuth ×1

linked-list ×1

nodes ×1