1. package com.tw.dst.sq;  
  2.  
  3.  
  4. /**  
  5.  * <p>队列是一种先进先出(FIFO)的线性数据结构,常用操作有插入(insert)和删除(remove)</p>  
  6.  * @author tangw 2010-11-27  
  7.  */ 
  8. public class Queue {  
  9.     //  队列数组     
  10.     private long queueArr[];     
  11.     //队列的前端下标     
  12.     private int front;     
  13.     //队列的尾端下标     
  14.     private int rear;     
  15.     //队列的大小     
  16.     private int maxSize;     
  17.     //队列中元素的个数     
  18.     private int nItems;     
  19.     //初始化一个大小为size的队列     
  20.     public Queue(int size){     
  21.         queueArr = new long[size];     
  22.         maxSize = size;     
  23.         front = 0;     
  24.         rear = -1;     
  25.         nItems = 0;     
  26.     }     
  27.     //插入操作     
  28.     public void insert(long value){     
  29.         //队列已满     
  30.         if(rear == maxSize-1)     
  31.             rear = -1;     
  32.         queueArr[++rear] = value;     
  33.         nItems++;     
  34.     }     
  35.     //删除操作     
  36.     public long remove(){     
  37.         long temp = queueArr[front++];     
  38.         if(front == maxSize)     
  39.             front = 0;     
  40.         nItems--;     
  41.         return temp;     
  42.     }     
  43.     //返回队列第一个元素     
  44.     public long peakFront(){     
  45.         return queueArr[front];     
  46.     }     
  47.     //判断是否为空     
  48.     public boolean isEmpty(){     
  49.         return nItems == 0;     
  50.     }     
  51.     //判断是否已满     
  52.     public boolean isFull(){     
  53.         return nItems == maxSize;     
  54.     }     
  55.     //返回队列中元素的个数     
  56.     public int size(){     
  57.         return nItems;     
  58.     }     
  59.          
  60.     public void print(){     
  61.         for(int i = front;i < front+nItems;i++){     
  62.             System.out.print(queueArr[i]+" ");     
  63.         }     
  64.         System.out.println();     
  65.     }     
  66.          
  67.     public static void main(String[] args) {     
  68.         Queue q = new Queue(10);     
  69.         while(!q.isFull()){     
  70.             long value = (long)(Math.random()*100);     
  71.             q.insert(value);     
  72.         }     
  73.         q.print();     
  74.         while(!q.isEmpty()){     
  75.             q.remove();     
  76.             q.print();     
  77.         }     
  78.         q.print();     
  79.         System.out.println(q.isEmpty());     
  80.     }   
  81.  
  82. }