文档详情

C++快速入门.ppt

发布:2017-05-04约20.22万字共1095页下载文档
文本预览下载声明
a0 a1 an-1 an …… 队头 队尾 入队 出队 数组下标 0 1 n-1 n max (一般状态) …… 队头 队尾 入队 出队 数组下标 0 1 n-1 n max (队空状态) a0 a1 an-1 an amax …… 队头 队尾 入队 出队 数组下标 0 1 n-1 n max (队满状态) 元素移动方向 元素移动方向 循环队列 在想象中将数组弯曲成环形,元素出队时,后继元素不移动,每当队尾达到数组最后一个元素时,便再回到数组开头。 特殊的线性群体——队列 1 2 3 4 …… m-1 m-2 m-3 0 am am+1 am+2 a3 队头 队尾 a4 am-2 am-3 am-1 队满状态 元素个数=m 1 2 3 4 …… m-1 m-2 m-3 0 队尾 队头 队空状态 元素个数=0 队尾 1 2 3 4 …… m-1 m-2 m-3 0 a0 a1 a2 a3 队头 一般状态 例9-10 队列类模板 #ifndef QUEUE_CLASS #define QUEUE_CLASS #include iostream.h #include stdlib.h const int MaxQSize = 50; 特殊的线性群体——队列 template class T class Queue { private: int front, rear, count; T qlist[MaxQSize]; public: Queue (void); void QInsert(const T item); T QDelete(void); void ClearQueue(void); T QFront(void) const; int QLength(void) const; int QEmpty(void) const; int QFull(void) const; }; // 构造函数,初始化队头指针、队尾指针、元素个数 template class T QueueT::Queue (void) : front(0), rear(0), count(0) {} //向队尾插入元素(入队) template class T void QueueT::QInsert (const T item) { // 如果队满,中止程序 if (count == MaxQSize) { cerr Queue overflow! endl; exit(1); } // increment count, assign item to qlist and update rear count++; //元素个数增1 qlist[rear] = item; //向队尾插入元素 rear = (rear+1) % MaxQSize; //队尾指针增1,用取余运算实现循环队列 } // 删除队首元素,并返回该元素的值(出队) template class T T QueueT::QDelete(void) { T temp; // 如果队空,中止程序 if (count == 0) { cerr Deleting from an empty queue! endl; exit(1); } // 记录队首元素值 temp = qlist[front]; count--; // 元素个数自减 front = (front+1) % MaxQSize; //队首指针增1。取余以实现循环队列 return temp; //返回首元素值 } // 访问队列首元素(返回其值) template class T T QueueT::QFront(void) const {
显示全部
相似文档