码迷,mamicode.com
首页 > 编程语言 > 详细

java数据结构-08队列

时间:2020-05-25 00:08:12      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:add   自己实现   while   empty   alt   info   先来   span   get   

一、什么是队列

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

技术图片

 

二、接口设计

技术图片

 

 三、代码实现

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

  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队列

标签:add   自己实现   while   empty   alt   info   先来   span   get   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!