队列-链表方式实现

46 阅读1分钟

:这段代码是 Java 语言实现的一个队列数据结构的示例。它包含一个内部类 Node,用于表示队列中的节点。Node 类有三个成员变量:value、pre 和 next,分别表示节点的值、前一个节点的引用和后一个节点的引用。

外部类 Queue 有两个成员变量:head 和 tail,分别表示队列的头节点和尾节点。它提供了四个方法:pushHead(int data)、pushTail(int data)、popHead() 和 popTail()。pushHead 和 pushTail 方法分别用于在队列的头部和尾部添加节点。popHead 和 popTail 方法分别用于从队列的头部和尾部删除节点,并返回删除节点的值。如果队列为空,popHead 和 popTail 方法将返回-1。

这段代码提供了一个基本的队列功能,允许用户在队列的头部和尾部添加或删除元素。

public class Queue {

    private Node head;

    private Node tail;


    public void pushHead(int data) {

        Node newNode = new Node(data);
        if (head == null) {
            head = newNode;
            tail = newNode;
        }else {

            newNode.next = head;
            head.pre=newNode;
            head = newNode;
        }

    }


    public void pushTail(int data) {

        Node newNode = new Node(data);

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

    public int popHead() {
        if (head == null) {
            return -1;
        }
        int value=head.value;
        if (head == tail) {
            head = null;
            tail = null;
        }
        Node next=head.next;
        head.next=null;
        next.pre=null;
        head=next;
        return value;

    }
    public int popTail() {

        if (tail == null) {
            return -1;
        }
        int value=tail.value;
        if (tail == head) {
            tail = null;
            head = null;
        }
        Node prev=tail.pre;
        prev.next = null;
        tail.pre=null;
        tail=prev;
        return value;
    }
    

    private static class Node {


        private int value;

        private Node pre;
        private Node next;

        public Node(int value) {

            this.value = value;
        }

    }
}