java實現數據結構中的環形隊列


最近在看數據結構,隊列在數據結構中是個重要的元素。

定義:數據結構是指相互之間存在一種或多種特定關系的數據元素的集合。

隊列主要分為普通隊列和環形隊列,環形隊列比普通隊列的使用效率更高(普通隊列容易造成內存的浪費,時間效率也會降低,主要體現在隊列的刪除操作上)

下面用java來實現隊列,僅供參考

package demo;
//環形隊列
public class QueueDemo {
    //創建隊列
    public QueueDemo(int num){
        m_iQueueCapacity=num;
        m_pQueue=new Object[num];
        clearQueue();
        
    }
    //銷毀隊列
    public void destryQueue(){
        m_pQueue=null;
    }
    //清空隊列
    public void clearQueue(){
        m_iHead=0;
        m_iTail=0;
        m_iQueue=0;
    }
    //判斷隊列是否為空
    public boolean isEmpotyQueue(){
        if(m_iQueue==0){
            return true;
        }
        return false;
        
    }
    //判斷隊列是否已滿
    public boolean queueFull(){
        if(m_iQueue==m_iQueueCapacity){
            return true;
        }
        return false;
    }
    //隊列長度
    public int queueLength(){
        return m_iQueue;
    }
    //新增元素
    public boolean EnQueue(Object element){
        if(queueFull()){
            return false;
        }
        m_pQueue[m_iTail]=element;
        m_iTail++;
        m_iTail=m_iTail%m_iQueueCapacity;
        m_iQueue++;
        return true;
        
    }
    //刪除元素
    public Object DeQueue(){
        if(isEmpotyQueue()){
            return null;
        }
        Object element=m_pQueue[m_iHead];
        m_iHead++;
        m_iHead=m_iHead%m_iQueueCapacity;
        m_iQueue--;
        return element;
        
    }
    //遍歷隊列
    public void queueTraverse(){
        for(int i=m_iHead;i<m_iQueue+m_iHead;i++){
            
            System.out.println(m_pQueue[i%m_iQueueCapacity]);
            
            
        }
    }
    private Object[] m_pQueue;//隊列
    private int m_iQueue;//隊列元素個數
    private int m_iQueueCapacity;//隊列數組容量
    private int m_iHead;//對頭
    private int m_iTail;//隊尾
    
    public static void main(String[] args){
        QueueDemo demo=new QueueDemo(5);
        demo.EnQueue("aaa");
        demo.EnQueue("bbb");
        demo.EnQueue("ccc");
        demo.EnQueue("ddd");
        demo.DeQueue();
        demo.DeQueue();
        demo.EnQueue("ffff");
        demo.EnQueue("vvvv");
        demo.queueTraverse();
    }
}
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM