c++簡單實現迴圈隊列

來源:互聯網
上載者:User

標籤:std   []   print   end   style   clu   入口   rom   index   

棧的資料結構是先進後出,而隊列的資料結構就是 一個出口一個入口入口只能入隊,出口只能出隊

實現的代碼如下:

 1 /* 2 迴圈靜態隊列實現 2017年8月5日07:50:58 3 */ 4 #ifndef __QUEUE_H__ 5 #define __QUEUE_H__ 6 #include <Windows.h> 7 class Queue 8 { 9 public:10     Queue();            //無參構造11     Queue(DWORD);        //有參構造12     ~Queue();            //析構13     BOOL push(UINT);    //入隊14     BOOL pop(UINT&);    //出隊15     void traverse();    //遍曆16     BOOL isEmpty();        //是否為null17     BOOL isFull();        //是否已滿18 private:19     DWORD m_qUeuesize;    //隊列的數組長度20     DWORD m_front;    //隊列第一個元素索引21     DWORD m_rear;    // 隊列下一個可用元素索引22     PDWORD m_pTr;    //元素的指標 23 };24 Queue::Queue()25     :m_qUeuesize(6),26     m_front(NULL),27     m_rear(NULL)28 {29     m_pTr = new DWORD[m_qUeuesize];30     if(!m_pTr)return;31     ZeroMemory(m_pTr,sizeof(DWORD)*m_qUeuesize);32 }33 Queue::Queue(DWORD dwSize)34     :m_qUeuesize(dwSize),35     m_front(NULL),36     m_rear(NULL)37 {38     m_pTr = new DWORD[m_qUeuesize];39     if(!m_pTr)return;40     ZeroMemory(m_pTr,sizeof(DWORD)*m_qUeuesize);41 }42 Queue::~Queue()43 {44     if(m_pTr)45         delete [] m_pTr;46 }47 BOOL Queue::push(UINT Element)48 {49     if (isFull())50     {51         //隊列已滿 入隊失敗52         return FALSE;53     }else54     {55         m_pTr[m_rear] = Element;56         m_rear = (m_rear+1) % m_qUeuesize;57         return TRUE;58     }59 }60 BOOL Queue::pop(UINT& Element)61 {62     if (isEmpty())63     {64         //隊列是null的出隊失敗65         return FALSE;66     }else67     {68         Element = m_pTr[m_front];    //先把要出隊的資料返回去69         m_front = (m_front+1) % m_qUeuesize;70     }71     return TRUE;72 }73 BOOL Queue::isEmpty()74 {75     if (m_front == m_rear)76         return TRUE;77     else78         return FALSE;79 }80 BOOL Queue::isFull()81 {82     if((m_rear+1) % m_qUeuesize == m_front)83         return TRUE;84     else85         return FALSE;86 }87 void Queue::traverse()88 {89     DWORD dwTempIndex = m_front;90     while(m_rear!=dwTempIndex)91     {92         printf("%d\t",m_pTr[dwTempIndex]);93         dwTempIndex = (dwTempIndex + 1) % m_qUeuesize;94     }95     printf("\r\n");96 }97 #endif    //__QUEUE_H__

示範代碼

 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include "Queue.h" 4 int main(void) 5 { 6     UINT m_elem = NULL; 7     Queue * tempPtr = new Queue(10); 8     if (tempPtr->isEmpty()) 9     {10         printf("隊列是null的\r\n");11     }12     tempPtr->push(1);13     tempPtr->push(2);14     tempPtr->push(3);15     tempPtr->push(4);16     tempPtr->push(5);17     if(tempPtr->isFull())18     {19         printf("隊列已滿\r\n");20     }else21     {22         tempPtr->push(6);23     }24     tempPtr->traverse();25     tempPtr->pop(m_elem);26     printf("m_elem:%d\r\n",m_elem);27     tempPtr->traverse();28     delete tempPtr;29     system("pause");30     return 0;31 }

 

c++簡單實現迴圈隊列

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.