隊列是一種:先進先出,後進後出的數據結構數組
單項隊列: 從前面刪除元素,從後面插入元素,跟現實中排隊是同樣的道理數據結構
這裏咱們用指針移動位置的方法。由於數組刪除元素,若是咱們要跟現實中排隊效果同樣,就須要移動數組,很浪費時間和空間。app
因此:spa
>添加元素時,當尾部到達數組末尾的時候,咱們就把他指向頭部指針
>刪除元素時,當頭部到達數組末尾的時候,咱們就把頭部重置,即指向0code
package com.ghostwu; class Queue { private Object[] queueArr; private int maxSize; //總大小 private int front; //頭 private int rear; //尾 private int realNums; //隊列真實長度 public Queue( int _n ){ maxSize = _n; queueArr = new Object[maxSize]; front = 0; rear = -1; realNums = 0; } public void append( int value ){ if( isFull() ){ System.out.println( "隊列滿了" ); }else { if( rear == maxSize - 1 ){ //尾部滿了,把指針指到頭部 rear = -1; } queueArr[++rear] = value; realNums++; } } public Object shift(){ Object value = null; if( !isEmpty() ){ value = peekFront(); queueArr[front] = null; front++; if( front == maxSize ){ front = 0; } realNums--; } return value; } public Object peekFront(){ return queueArr[front]; } public boolean isFull(){ return realNums == maxSize; } public boolean isEmpty(){ return realNums == 0; } public int getSize(){ return realNums; } public void print(){ for( int i = 0; i < queueArr.length; i++ ){ System.out.print( queueArr[i] + "\t" ); } } } public class MyQueue { public static void main(String[] args) { Queue q = new Queue( 5 ); q.append( 10 ); q.append( 20 ); q.append( 30 ); q.append( 40 ); q.append( 50 ); System.out.println( q.peekFront() ); System.out.println( q.getSize() ); q.shift(); System.out.println( q.peekFront() ); q.print(); q.append( 100 ); q.append( 200 ); } }