标签: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); } }
标签:add 自己实现 while empty alt info 先来 span get
原文地址:https://www.cnblogs.com/jenne-blog/p/12953569.html