`

线性表之队列的实现

阅读更多
/**  
 * Queue.java  
 * 线性表之队列  
 * 队列有如下特点:  
 * 先进先出  
 * 即,从尾部添加(push)新数据  
 *    从头部取出(pop)数据  
 */   
   
   
/**  
 * 队列(Queue)也是一种运算受限的线性表。  
 * 它只允许在表的一端进行插入,而在另一端进行删除。  
 * 允许删除的一端称为队头(front),允许插入的一端称为队尾(rear)。  
 */   
package line;   
   
   
/**  
 * @author sunxboy  
 * 9:59:59 AM  May 22, 2007  
 */   
public class Queue {   
   
    int data[];   
    int maxSize;   
    int size;   
    int front;  //允许删除的一端   
    int rear;   //允许插入的一端   
    public Queue(int maxSize) {   
        this.maxSize = maxSize;   
        this.data = new int[maxSize];   
        size= 0;   
        rear = 0;   
        front =0;   
    }   
       
    public boolean isEmpty() {   
        return size==0;   
    }   
       
    public boolean isFull() {   
        return size==maxSize;   
    }   
       
    /**  
     * 循环队列  
     * @param data  
     * @return  
     */   
    public boolean push(int data)throws Exception {   
           
        if(isFull())   
            throw new Exception("队列已满!");   
        size++;   
        this.data[rear]= data;   
               
//          if(rear+1==maxSize)   
//                 rear=0;   
//           else   
//               rear++;   
   
            rear=(rear+1)%maxSize;   
           
        return true;   
   
    }   
       
    public int pop() throws Exception{   
        int temp;   
        if(isEmpty())   
            throw new Exception("队列是空的.");   
        temp = this.data[this.front];   
   
        this.size--;   
//      if(front+1==maxSize)   
//             front=0;   
//       else   
//            front++;   
        front=(front+1)%maxSize;   
        return temp;   
    }   
       
       
    public static void main(String[] args) throws Exception{   
        Queue queue=new Queue(10);   
        queue.push(1);   
        queue.pop();   
//      queue.pop();   
        queue.push(2);   
        queue.push(3);   
        queue.push(4);   
        queue.push(5);   
        queue.push(6);   
        queue.push(7);   
        queue.push(8);   
        queue.push(9);   
        queue.push(10);   
//      queue.push(11);   
        while(!queue.isEmpty())   
        {   
            System.out.println(queue.pop());   
        }   
           
    }   
}   
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics