<八>java数据结构与算法 队列 与 循环队列

来源:互联网 发布:数据库审计产品排行榜 编辑:程序博客网 时间:2024/04/28 05:11

核心思想:

队列与栈不同的是:栈是“先进后出,后进先出”,而队列是“先进先出”;可以讲队列看作是一个水管,一头进,另外一头出....

同样这个很简单,话不多说直接上代码案例,一看你就懂了

非循环队列:

public class Queue {// 数组private long[] arr;// 最大空间private int maxSize;// 有效元素大小private int elems;// 队头private int font;// 队尾private int end;public Queue(int maxSize) {this.maxSize = maxSize;arr = new long[maxSize];elems = 0;font = 0;end = -1;}// 插入数据public void insert(long value) {arr[++end] = value;elems++;}// 移除数据public long remove() {elems--;return arr[font++]; }// 是否为空public boolean isEmpty() {return (elems == 0);}// 是否满了public boolean isFull() {return (end == maxSize - 1);}// 返回有效元素大小public int size() {return elems;}}
public class TestQueue {public static void main(String[] args) {Queue queue = new Queue(5);System.out.println(queue.isEmpty());queue.insert(50);queue.insert(20);queue.insert(10);queue.insert(2);queue.insert(1);System.out.println(queue.isEmpty());System.out.println(queue.isFull());while(!queue.isEmpty()) {System.out.println(queue.remove());}queue.insert(10);}}



下面是介绍循环队列的:

<span style="font-size:18px;">public class MyQueue {// 数组private long[] arr;// 最大空间private int maxSize;// 有效元素大小private int elems;// 队头private int font;// 队尾private int end;public MyQueue(int maxSize) {this.maxSize = maxSize;arr = new long[maxSize];elems = 0;font = 0;end = -1;}// 插入数据public void insert(long value) {if(end == maxSize - 1) {end = -1;}arr[++end] = value;elems++;}// 移除数据public long remove() {long tmp = arr[font++];if(font == maxSize) {font = 0;}elems--;return tmp; }// 是否为空public boolean isEmpty() {return (elems == 0);}// 是否满了public boolean isFull() {return (elems == maxSize);}// 返回有效元素大小public int size() {return elems;}}</span>
测试:

<span style="font-size:18px;">public class TestMyQueue {public static void main(String[] args) {MyQueue mq = new MyQueue(5);System.out.println(mq.isEmpty());mq.insert(30);mq.insert(20);mq.insert(10);mq.insert(2);mq.insert(1);mq.insert(20);while(!mq.isEmpty()) {long tmp = mq.remove();System.out.println(tmp + " ");}}}</span>



0 0