- 
            
            MyQueue.h 查看全部
- 
            
            每次插入之前需要判断一下,队列是否已满 插入一个元素后,队尾指向下一个位置,直到环形队列已满 取出元素,从队头开始取,取出一个元素,队头就指向下一个元素 队列中空出的位置,队列为又可以插入新的元素 查看全部
- 
            
            集合。关系查看全部
- 
            
            队列的实现,C与C++有什么区别? 查看全部
- 
            
            队列分类。。。 查看全部
- 
            
            队列 先入先出 普通队列 环形队列 查看全部
- 
            
            当在堆中实例化对象时,对象当中需要有默认的构造函数(参数有默认值) 查看全部
- 
            
            出队列必须用引用。别忘了数组位置取余 查看全部
- 
            
            环形队列示意图,弥补普通队列的缺点,可充分利用每个内存空间 查看全部
- 
            
            普通队列缺点 查看全部
- 
            
            队列可分为 查看全部
- 
            
            队列是先入先出的 查看全部
- 
            
            数据结构是指相互之间存在一种货多种特定关系的数据元素的集合 查看全部
- 
            
            队列: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;//队列数组指针
 int m_iQueueLen;//队列元素个数
 int m_iQueueCapacity;//队列数组容量
 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;
 }查看全部
举报
 
             
         
                 
                 
                 
                 
                 
                 
                