首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用Java编写遍历链表的dequeue()函数

dequeue()函数是一个用Java编写的遍历链表的函数,它的作用是从链表的头部和尾部分别删除元素,并返回删除的元素值。下面是一个完善且全面的答案:

dequeue()函数是双端队列(Double Ended Queue)的一种操作,它允许在队列的两端进行插入和删除操作。在Java中,我们可以使用链表来实现双端队列的功能。

以下是一个用Java编写的遍历链表的dequeue()函数的示例代码:

代码语言:txt
复制
public class DequeueExample {
    private Node head;
    private Node tail;
    
    private class Node {
        int data;
        Node next;
        
        public Node(int data) {
            this.data = data;
            this.next = null;
        }
    }
    
    public void enqueueFront(int data) {
        Node newNode = new Node(data);
        
        if (head == null) {
            head = newNode;
            tail = newNode;
        } else {
            newNode.next = head;
            head = newNode;
        }
    }
    
    public void enqueueRear(int data) {
        Node newNode = new Node(data);
        
        if (head == null) {
            head = newNode;
            tail = newNode;
        } else {
            tail.next = newNode;
            tail = newNode;
        }
    }
    
    public int dequeueFront() {
        if (head == null) {
            throw new NoSuchElementException("Queue is empty");
        }
        
        int data = head.data;
        head = head.next;
        
        if (head == null) {
            tail = null;
        }
        
        return data;
    }
    
    public int dequeueRear() {
        if (head == null) {
            throw new NoSuchElementException("Queue is empty");
        }
        
        int data = tail.data;
        
        if (head == tail) {
            head = null;
            tail = null;
        } else {
            Node currentNode = head;
            while (currentNode.next != tail) {
                currentNode = currentNode.next;
            }
            currentNode.next = null;
            tail = currentNode;
        }
        
        return data;
    }
    
    public void printQueue() {
        Node currentNode = head;
        while (currentNode != null) {
            System.out.print(currentNode.data + " ");
            currentNode = currentNode.next;
        }
        System.out.println();
    }
    
    public static void main(String[] args) {
        DequeueExample dequeue = new DequeueExample();
        
        dequeue.enqueueFront(1);
        dequeue.enqueueFront(2);
        dequeue.enqueueRear(3);
        dequeue.enqueueRear(4);
        
        dequeue.printQueue();  // 输出:2 1 3 4
        
        System.out.println(dequeue.dequeueFront());  // 输出:2
        System.out.println(dequeue.dequeueRear());   // 输出:4
        
        dequeue.printQueue();  // 输出:1 3
    }
}

在上述代码中,我们使用了一个内部类Node来表示链表的节点。enqueueFront()函数用于在链表的头部插入元素,enqueueRear()函数用于在链表的尾部插入元素。dequeueFront()函数用于从链表的头部删除元素并返回删除的元素值,dequeueRear()函数用于从链表的尾部删除元素并返回删除的元素值。printQueue()函数用于打印链表中的所有元素。

这个遍历链表的dequeue()函数可以用于实现双端队列的功能,可以在队列的头部和尾部进行插入和删除操作。它的时间复杂度为O(1)。

腾讯云提供了一系列的云计算产品,包括云服务器、云数据库、云存储等,可以根据具体需求选择适合的产品。具体的产品介绍和相关链接地址可以参考腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券