【问题标题】:Java: Moving Cursor Forward/Backward in a doubly linked listJava:在双向链表中向前/向后移动光标
【发布时间】:2018-09-21 02:33:45
【问题描述】:

像普通的链表一样,我有一个节点类和一个双链表类。头、尾和光标最初都设置为空。添加元素后,光标将设置为新添加的元素。假设到目前为止我已经添加了两个元素,光标正在引用第二个元素(因为它是刚刚添加的)。如何将光标移回以引用第一个元素?另外,我如何将它再次向前移动到第二个元素?

【问题讨论】:

    标签: java doubly-linked-list


    【解决方案1】:

    你的问题和目的不是很清楚,反正遍历java集合框架的LinkedList(java集合api中的链表)可以使用Iterator对象。这样光标就会从一个对象依次遍历到另一个对象,直到到达终点。

    我希望下面的链接会有用。

    https://beginnersbook.com/2014/07/java-linkedlist-iterator-example/

    【讨论】:

    • 我不想横穿双重列表,我只想向后移动一个索引
    • @WangWang 那么,您是否尝试实施该列表? “如何向后移动光标”实际上是指“如何在双向链表类上实现一个方法,以便该类的用户可以向后移动光标”?
    • @ShioT 是的,后退 1
    【解决方案2】:

    据我所知,Java 没有双向链表类。如果我错了,请纠正我。

    如果它是自定义构建的双向链表,您是否想知道如何操作?

    // Class for Doubly Linked List 
    public class DLL { 
        Node head; // head of list 
    
        /* Doubly Linked list Node*/
        class Node { 
            int data; 
            Node prev; 
            Node next; 
    
            // Constructor to create a new node 
            // next and prev is by default initialized as null 
            Node(int d) { data = d; } 
        } 
    } 
    
    public class DLLTest{
        public static void main(String[] args) {
            // setup
            Node cursor = new Node(1);
            cursor.next = new Node(2);
    
            Node temp = cursor;
            cursor = cursor.next;
            cursor.prev = temp;
    
    
            // To move cursor to second node, overwrite cursor with next node
            cursor = cursor.next;
    
            // To move cursor to first node, overwrite cursor again
            cursor = cursor.prev;
        }
    }
    

    DLL 的实现来自:https://www.geeksforgeeks.org/doubly-linked-list/

    【讨论】:

    • 这里的 Node 类不是静态类,因此每个 Node 都包含对父对象的引用。内存占用看起来不太好。
    • 所以改成静态类 Node {...}。那应该解决它,对吧?您能否找到一个网站,让我可以阅读更多相关信息。
    • 我认为谷歌搜索“Java 内部类”会给你想要的东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多