1 // 普通队列 2 package iYou.neugle.list; 3 4 public class MySeqQueue<T> { 5 private SeqQueue queue = new SeqQueue(); 6 7 class SeqQueue { 8 public int maxSize = 10; 9 public T[] data = (T[]) new Object[this.maxSize]; 10 public int head = 0;// 头指针 11 public int tail = 0;// 尾指针 12 } 13 14 // 初始化队列 15 public void SeqQueueInit() { 16 this.queue.head = 0; 17 this.queue.tail = 0; 18 System.out.println("队列初始化成功!"); 19 } 20 21 // 出队 22 public T SeqQueueOut() { 23 if (this.queue.head == this.queue.tail) { 24 System.out.println("队列已空,无法出队!"); 25 return null; 26 } 27 T data = this.queue.data[this.queue.head]; 28 this.queue.data[this.queue.head] = null; 29 this.queue.head++; 30 return data; 31 } 32 33 // 入队 34 public void SeqQueueIn(T data) { 35 if (this.queue.tail == this.queue.maxSize) { 36 System.out.println("队列已满,无法入队!"); 37 return; 38 } 39 this.queue.data[this.queue.tail++] = data; 40 } 41 42 // 获取队头元素 43 public T SeqQueuePeek() { 44 if (this.queue.head == this.queue.tail) { 45 System.out.println("队列已空,无法获取列头元素!"); 46 return null; 47 } 48 49 return this.queue.data[this.queue.head]; 50 } 51 52 // 获取队列长度 53 public int SeqQueueLen() { 54 return this.queue.tail - this.queue.head; 55 } 56 }
1 // 循环队列 2 package iYou.neugle.list; 3 4 public class MySeqLoopQueue<T> { 5 private SeqQueue queue = new SeqQueue(); 6 7 class SeqQueue { 8 public int maxSize = 10; 9 public T[] data = (T[]) new Object[this.maxSize]; 10 public int head = 0;// 头指针 11 public int tail = 0;// 尾指针 12 public int size = 0;// 实际数 13 } 14 15 // 初始化队列 16 public void SeqQueueInit() { 17 this.queue.head = 0; 18 this.queue.tail = 0; 19 this.queue.size = 0; 20 System.out.println("循环队列初始化成功!"); 21 } 22 23 // 出队 24 public T SeqQueueOut() { 25 if (this.queue.size == 0) { 26 System.out.println("循环队列已空,无法出队!"); 27 return null; 28 } 29 T data = this.queue.data[this.queue.head]; 30 this.queue.data[this.queue.head] = null; 31 this.queue.size--; 32 this.queue.head = (this.queue.head + 1) % this.queue.maxSize; 33 return data; 34 } 35 36 // 入队 37 public void SeqQueueIn(T data) { 38 if (this.queue.size == this.queue.maxSize) { 39 System.out.println("循环队列已满,无法入队!"); 40 return; 41 } 42 this.queue.data[this.queue.tail] = data; 43 this.queue.size++; 44 this.queue.tail = (this.queue.tail + 1) % this.queue.maxSize; 45 } 46 47 // 获取队头元素 48 public T SeqQueuePeek() { 49 if (this.queue.size == 0) { 50 System.out.println("循环队列已空,无法获取列头元素!"); 51 return null; 52 } 53 54 return this.queue.data[this.queue.head]; 55 } 56 57 // 获取队列长度 58 public int SeqQueueLen() { 59 return this.queue.size; 60 } 61 }