java数据结构-队列
java 数据结构-队列的数组实现:
通过循环队列避免假溢出问题
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。1 package com.cn.sjjg.queue; 2 3 public class MyQueue<T> { 4 5 private T[] datas; //使用数组作为队列元素的容器 6 7 private int maxSize; //队列容量 8 9 private int front; //头指针 10 11 private int rear; //尾指针 12 13 //初始化指针 14 public void initQueue(){ 15 this.front = 0; 16 this.rear = 0; 17 } 18 19 //队列初始化: 20 @SuppressWarnings("unchecked") 21 public MyQueue(int maxSize){ 22 if(maxSize < 1){ 23 maxSize = 1; 24 } 25 this.maxSize = maxSize; 26 this.front = 0; 27 this.rear = 0; 28 this.datas = (T[])new Object[this.maxSize]; 29 } 30 31 //判断队列状态: 队满,队空 32 public boolean isNull(){ 33 if(this.front == this.rear){ 34 return true; 35 } else { 36 return false; 37 } 38 } 39 40 public boolean isFull(){ 41 if((rear + 1) % this.maxSize == front ){ 42 return true; 43 } else { 44 return false; 45 } 46 } 47 48 //两个操作 : 进队 49 public boolean push(T data){ 50 if(isFull()){ 51 return false; //队满不发进入 52 } else{ 53 datas[rear] = data; 54 rear = (rear + 1) % maxSize ; //队尾指针+1 55 return true; 56 } 57 } 58 59 //出队 60 public T pop(){ 61 if(isNull()){ 62 return null ; // 没有可出队元素 63 } else { 64 T popData = datas[front]; 65 front = (front+1) % maxSize; 66 return popData; 67 } 68 } 69 70 71 public T[] getDatas() { 72 return datas; 73 } 74 75 public void setDatas(T[] datas) { 76 this.datas = datas; 77 } 78 79 public int getMaxSize() { 80 return maxSize; 81 } 82 83 public void setMaxSize(int maxSize) { 84 this.maxSize = maxSize; 85 } 86 87 public int getFront() { 88 return front; 89 } 90 91 public void setFront(int front) { 92 this.front = front; 93 } 94 95 public int getRear() { 96 return rear; 97 } 98 99 public void setRear(int rear) { 100 this.rear = rear; 101 } 102 103 public static void main(String[] args) { 104 MyQueue<Character> myqueue = new MyQueue<Character>(4); 105 106 //判断 107 System.out.println("队列是否为空:"+myqueue.isNull()); 108 109 //入队A,B,C 110 myqueue.push('A'); 111 myqueue.push('B'); 112 myqueue.push('C'); 113 114 System.out.println("队列是否为满:"+myqueue.isFull()); 115 116 //出队 117 Character data1 = myqueue.pop(); 118 System.out.println("出队:"+data1); 119 Character data2 = myqueue.pop(); 120 System.out.println("出队:"+data2); 121 Character data3 = myqueue.pop(); 122 System.out.println("出队:"+data3); 123 Character data4 = myqueue.pop(); 124 System.out.println("出队:"+data4); 125 } 126 127 }

更多精彩