数据结构--队列Queue--循环顺序队列
生活随笔
收集整理的這篇文章主要介紹了
数据结构--队列Queue--循环顺序队列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
針對順序隊列中的入隊操作:if 隊列沒滿,但是隊尾到達數組末尾了,隊列"滿"了,其實沒有滿,數據需要整體移至數組頭部,才可以繼續入隊。
為解決該問題,避免數據的挪移,有了循環順序隊列
循環順序隊列的思路:
完成代碼見:https://github.com/hitskyer/course/tree/master/dataAlgorithm/chenmingming/queue
1. 主要修改
入隊函數修改
bool circularQueue<T>::enqueue(const T &data) {if(full())return false;else{if(empty()){m_pHead = m_pTail = 0;arrQ[0] = data;m_QueueLen++;}else if(m_pTail < m_capacity-1){arrQ[++m_pTail] = data;m_QueueLen++;}else //隊列沒滿,但是隊尾到達數組末尾了,讓tail變成-1{if(m_pTail + 1 == m_capacity)m_pTail = -1;arrQ[++m_pTail] = data;m_QueueLen++;}return true;} }打印函數修改
void circularQueue<T>::print() const {if(empty())cout << "empty queue!" << endl;cout << "circularQueue from head to tail as follow:" << endl;int j = m_pHead;for(UINT i = 0; i < m_QueueLen; ){if(j == m_capacity) //打印時注意下標循環跳轉j = 0;cout << "No." << ++i << " elem is " << arrQ[j++] << endl;}cout << "--------------print end----------------" << endl; } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的数据结构--队列Queue--循环顺序队列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html悬浮窗口退出,网页中可关闭的漂浮
- 下一篇: vue是什么软件_Angular vs