首页主机资讯java中的双向链表怎么实现

java中的双向链表怎么实现

时间2023-12-04 11:27:03发布访客分类主机资讯浏览1584
导读:在Java中,可以使用自定义的双向链表类来实现双向链表。以下是一个简单的双向链表的实现示例: public class DoublyLinkedList { private Node head; // 链表头节点 priva...

在Java中,可以使用自定义的双向链表类来实现双向链表。以下是一个简单的双向链表的实现示例:

public class DoublyLinkedList {
    
    private Node head;
     // 链表头节点
    private Node tail;
 // 链表尾节点

    // 链表节点类
    private static class Node {
    
        private T data;
     // 节点数据
        private Node prev;
     // 前一个节点引用
        private Node next;
 // 后一个节点引用

        public Node(T data) {
    
            this.data = data;

        }

    }


    // 在链表末尾添加节点
    public void add(T data) {
    
        Node newNode = new Node(data);

        if (head == null) {
    
            head = newNode;
    
            tail = newNode;

        }
 else {
    
            newNode.prev = tail;
    
            tail.next = newNode;
    
            tail = newNode;

        }

    }


    // 在链表指定位置插入节点
    public void insert(int index, T data) {

        if (index  size()) {
    
            throw new IndexOutOfBoundsException();

        }
    

        Node newNode = new Node(data);

        if (index == 0) {

            if (head == null) {
    
                head = newNode;
    
                tail = newNode;

            }
 else {
    
                newNode.next = head;
    
                head.prev = newNode;
    
                head = newNode;

            }

        }
 else if (index == size()) {
    
            tail.next = newNode;
    
            newNode.prev = tail;
    
            tail = newNode;

        }
 else {
    
            Node current = getNode(index);
    
            newNode.prev = current.prev;
    
            newNode.next = current;
    
            current.prev.next = newNode;
    
            current.prev = newNode;

        }

    }


    // 获取链表指定位置的节点
    private Node getNode(int index) {

        if (index = size()) {
    
            throw new IndexOutOfBoundsException();

        }
    

        Node current = head;
    
        for (int i = 0;
 i = size()) {
    
            throw new IndexOutOfBoundsException();

        }


        if (index == 0) {
    
            head = head.next;

            if (head == null) {
    
                tail = null;

            }
 else {
    
                head.prev = null;

            }

        }
 else if (index == size() - 1) {
    
            tail = tail.prev;
    
            tail.next = null;

        }
 else {
    
            Node current = getNode(index);
    
            current.prev.next = current.next;
    
            current.next.prev = current.prev;

        }

    }


    // 获取链表大小
    public int size() {
    
        int count = 0;
    
        Node current = head;

        while (current != null) {
    
            count++;
    
            current = current.next;

        }
    
        return count;

    }

}
    

以上是一个简单的双向链表类的实现示例,你可以使用该类来创建双向链表并进行插入、移除、获取节点等操作。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: java中的双向链表怎么实现
本文地址: https://pptw.com/jishu/567570.html
MySQL启动不了的原因及解决方法是什么 mysql怎么查看sql执行进度

游客 回复需填写必要信息