如何实现 LinkedList 的双向链表功能

发布时间:2025-01-21 14:48:30 作者:小樊
来源:亿速云 阅读:82

要实现一个双向链表,你需要在原有的单向链表基础上,为每个节点添加指向前一个节点和后一个节点的引用

public class Node {
    int data;
    Node prev;
    Node next;

    public Node(int data) {
        this.data = data;
        this.prev = null;
        this.next = null;
    }
}

public class DoublyLinkedList {
    Node head;
    Node tail;

    public DoublyLinkedList() {
        this.head = null;
        this.tail = null;
    }

    // 添加节点到链表尾部
    public void add(int data) {
        Node newNode = new Node(data);

        if (head == null) {
            head = newNode;
            tail = newNode;
        } else {
            newNode.prev = tail;
            tail.next = newNode;
            tail = newNode;
        }
    }

    // 从链表中删除节点
    public void remove(int data) {
        Node currentNode = head;

        while (currentNode != null) {
            if (currentNode.data == data) {
                if (currentNode.prev != null) {
                    currentNode.prev.next = currentNode.next;
                } else {
                    head = currentNode.next;
                }

                if (currentNode.next != null) {
                    currentNode.next.prev = currentNode.prev;
                } else {
                    tail = currentNode.prev;
                }

                return;
            }
            currentNode = currentNode.next;
        }
    }

    // 打印链表
    public void print() {
        Node currentNode = head;

        while (currentNode != null) {
            System.out.print(currentNode.data + " ");
            currentNode = currentNode.next;
        }
        System.out.println();
    }

    public static void main(String[] args) {
        DoublyLinkedList list = new DoublyLinkedList();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.print(); // 输出: 1 2 3 4

        list.remove(2);
        list.print(); // 输出: 1 3 4
    }
}

这个示例中,我们定义了一个 Node 类,它包含数据、前一个节点引用和后一个节点引用。DoublyLinkedList 类包含头节点和尾节点引用,以及添加、删除和打印链表的方法。通过这些方法,你可以实现双向链表的基本功能。

推荐阅读:
  1. 单向双向链表的实现
  2. JAVA自己实现LinkedList

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Java BigDecimal 的任意精度整数如何转换为字符串

下一篇:Java LinkedList 扩容机制是怎样的

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》