首页 > 编程语言 > 详细

java数据结构-08队列

时间:2020-05-25 00:30:47      阅读:81      评论:0      收藏:0      [点我收藏+]

一、什么是队列

队列是一种特殊的线性表,只能在头尾两端进行操作,特点是先进先出;就像排队买票一样,先来的先买

技术分享图片

 

二、接口设计

技术分享图片

 

 三、代码实现

可以使用动态数组、链表等实现;这里两种实现栈与双向链表

  1、栈

技术分享图片

public class Queue {
    private Stack<Integer> inStack;
    private Stack<Integer> outStack;

    public Queue() {
        inStack = new Stack<>();
        outStack = new Stack<>();
    }
    
    /** 入队 */
    public void push(int x) {
        inStack.push(x);
    }
    
    /** 出队 */
    public int pop() {
        checkOutStack();
        return outStack.pop();
    }
    
    /** 获取队头元素 */
    public int peek() {
        checkOutStack();
        return outStack.peek();
    }
    
    /** 是否为空 */
    public boolean empty() {
        return inStack.isEmpty() && outStack.isEmpty();
    }
    
    private void checkOutStack() {
        if (outStack.isEmpty()) {
            while (!inStack.isEmpty()) {
                outStack.push(inStack.pop());
            }
        }
    }
}

  2、双向链表实现

public class Queue<E> {
    private List<E> list = new LinkedList<>();//自己实现的类与接口,详细看单链表(一)
    
    public int size() {
        return list.size();
    }

    public boolean isEmpty() {
        return list.isEmpty();
    }
    
    public void clear() {
        list.clear();
    }

    public void enQueue(E element) {
        list.add(element);
    }

    public E deQueue() {
        return list.remove(0);
    }

    public E front() {
        return list.get(0);
    }
}

 

 

  

java数据结构-08队列

原文:https://www.cnblogs.com/jenne-blog/p/12953569.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!