-
MyQueue.h
查看全部 -
每次插入之前需要判斷一下,隊(duì)列是否已滿
插入一個(gè)元素后,隊(duì)尾指向下一個(gè)位置,直到環(huán)形隊(duì)列已滿
取出元素,從隊(duì)頭開始取,取出一個(gè)元素,隊(duì)頭就指向下一個(gè)元素
隊(duì)列中空出的位置,隊(duì)列為又可以插入新的元素
查看全部 -
集合。關(guān)系查看全部
-
隊(duì)列的實(shí)現(xiàn),C與C++有什么區(qū)別?
查看全部 -
隊(duì)列分類。。。
查看全部 -
隊(duì)列 先入先出
普通隊(duì)列????環(huán)形隊(duì)列
查看全部 -
當(dāng)在堆中實(shí)例化對象時(shí),對象當(dāng)中需要有默認(rèn)的構(gòu)造函數(shù)(參數(shù)有默認(rèn)值)
查看全部 -
出隊(duì)列必須用引用。別忘了數(shù)組位置取余
查看全部 -
環(huán)形隊(duì)列示意圖,彌補(bǔ)普通隊(duì)列的缺點(diǎn),可充分利用每個(gè)內(nèi)存空間
查看全部 -
普通隊(duì)列缺點(diǎn)
查看全部 -
隊(duì)列可分為
查看全部 -
隊(duì)列是先入先出的? ?
查看全部 -
數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種貨多種特定關(guān)系的數(shù)據(jù)元素的集合
查看全部 -
隊(duì)列:FIFO 先入先出查看全部
-
#ifndef MYQUEUE_H
#define MYQUEUE_H
class MyQueue
{
public:
?MyQueue(int queueCapacity);
?virtual ~MyQueue();
?void ClearQueue();//清空
?bool QueueEmpty() const;
?bool QueueFull()const;
?int QueueLength()const;
?bool EnQueue(int element);
?bool DeQueue(int &element);
?void QueueTraverse();//遍歷
private:
?int *m_pQueue;//隊(duì)列數(shù)組指針
?int m_iQueueLen;//隊(duì)列元素個(gè)數(shù)
?int m_iQueueCapacity;//隊(duì)列數(shù)組容量
?int m_iHead;
?int m_iTail;
};#endif
MyQueue::MyQueue(int queueCapacity)
{
?m_iQueueCapacity = queueCapacity;
?m_pQueue = new int[m_iQueueCapacity];
?ClearQueue();
}
MyQueue::~MyQueue()
{
?delete[]m_pQueue;
?m_pQueue = NULL;}
void MyQueue::ClearQueue()
{
?m_iHead = 0;
?m_iTail = 0;
?m_iQueueLen = 0;}
bool MyQueue::QueueFull() const
{
?if (m_iQueueLen == m_iQueueCapacity)
?{
??return true;
?}
?else
?{
??return false;
?}
}
bool MyQueue::QueueEmpty() const
{
?if (m_iQueueLen == 0)
?{
??return true;
?}
?else
?{
??return false;
?}
}
int MyQueue::QueueLength()const
{
?return m_iQueueLen;
}bool MyQueue::EnQueue(int element)
{
?if (QueueFull())
?{
??return false;
?}
?else
?{
??m_pQueue[m_iTail] = element;
??m_iTail++;
??m_iTail = m_iTail%m_iQueueCapacity;
??m_iQueueLen++;
??return true;
?}
}
bool MyQueue::DeQueue(int &element)
{
?if (QueueEmpty())
?{
??return false;
?}
?else
?{
??element = m_pQueue[m_iHead];
??m_iHead++;
??m_iHead %= m_iQueueCapacity;
??m_iQueueLen--;
??return true;
?}
}
void MyQueue::QueueTraverse()
{
?for (int i = m_iHead; i < m_iQueueLen+ m_iHead; i++)
?{
??cout << m_pQueue[i%m_iQueueCapacity]<<endl;
?}
}
int main()
{
?MyQueue *p = new MyQueue(20);?p->EnQueue(10);
?p->EnQueue(12);
?p->EnQueue(14);
?p->EnQueue(16);
?p->EnQueue(18);?p->QueueTraverse();
?cout << endl;?int e = 0;
?p->DeQueue(e);
?cout << e <<endl;?p->DeQueue(e);
?cout << e <<endl;
?cout << endl;
?p->QueueTraverse();
?p->ClearQueue();
?cout <<endl;
?p->EnQueue(20);
?p->EnQueue(30);
?p->QueueTraverse();
?delete p;
?p = NULL;?system("pause");
??? return 0;
}查看全部
舉報(bào)