首页 / C++ / 用c++实现顺序队列(用数组实现)
用c++实现顺序队列(用数组实现)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用c++实现顺序队列(用数组实现),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1936字,纯文字阅读大概需要3分钟。
内容图文
![用c++实现顺序队列(用数组实现)](/upload/InfoBanner/zyjiaocheng/780/2a9faccaea404caa91f3c6ed39a77def.jpg)
**********************************************queue.h*************************************
#ifndef SQUENTIALQUNUE_QUEUE_H #define SQUENTIALQUNUE_QUEUE_H #include <iostream> using namespace std; template <class T> class queue { public: queue(int capacity); void push(const T& a); void pop(); T Front(); T Rear(); bool isempty(); private: int front; int rear; int capacity; T* Queue; }; template <class T> queue<T>::queue(int capacity) { if (capacity<1) throw "queue capacity must be >0 "; this->capacity=capacity; Queue=new T[capacity]; front=rear=0; } template <class T> void queue<T>::push(const T& a) { // if (rear==capacity-1) // { // rear=0; // } // else 等价于rear=(rear+1)%capacity; // { // rear++; // } rear=(rear+1)%capacity; if((rear+1)%capacity==front)//队列满了 { T* newqueue=new T[2*capacity];//加倍 //判断是否发生了回绕 int start=(front+1)%capacity; if (start<2)//没有回转 { copy(Queue+start,Queue+start+capacity-1,newqueue); } else //发生了回转 所以需要拷贝两次 { copy(Queue+start,Queue+capacity,newqueue); copy(Queue,Queue+capacity-start,newqueue+capacity-start); } front=2*capacity-1; rear=capacity-2; capacity*=2; delete[] Queue; Queue=newqueue; } Queue[rear]=a; } template <class T> void queue<T>::pop() { if (isempty()) throw "queue is empty .cannot be delete"; front=(front+1)%capacity; Queue[front].~T(); } template <class T> T queue<T>::Front() { return Queue[front+1]; } template <class T> T queue<T>::Rear() { return Queue[rear]; } template <class T> bool queue<T>::isempty() { return rear==front; } #endif //SQUENTIALQUNUE_QUEUE_H
***************************************.cpp**************************
#include <iostream> //先进先出 或者后进后出 //队首 队尾 //对列的操作 //1.push 2.pop 3.front 4.rear 5.isempty #include "queue.h" int main() { queue<int> q(12); q.push(5); q.push(9); q.push(11); q.pop(); cout<<q.Rear()<<endl; cout<<q.Front()<<endl; cout<<"-----------------"<<endl; cout<<q.isempty()<<endl; return 0; }
内容总结
以上是互联网集市为您收集整理的用c++实现顺序队列(用数组实现)全部内容,希望文章能够帮你解决用c++实现顺序队列(用数组实现)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。