C++实现队列结构

发布时间:2026/7/19 9:46:13
C++实现队列结构 队列是一种动态集合是比较常用的一种数据结构它的特点就是先进先出。队列是一种特殊的线性表他的特殊在于队列的插入和删除操作分别在表的两端进行。插入的一端称为队尾删除的那一端称为队首。队列的插入操作和删除操作分别称为进队和出队。生活中排队购票的等现象就是队列的例子他的特点是先到先享受购票服务正好和栈结构相反。对于一个队列{k0,k1,k2,k3,k4,......kn}k0就是队首kn就是队尾出队时则是k0先出队假如kn1要入队则排到kn的后面。假如一个队列的初始元素为如果在队列中插入一个元素9则变成之后在队列中进行一次出队操作则变成经过分析我们就能得出队列中的一些属性队列myqueue队列最大容量maxsize队列当前容量 int curSize指向队头的指针Front指向队尾的指针tail入队的成员函数void push(int data)出队的成员函数void pop()获取队头元素成员函数int front()判断是否为空成员函数bool empty()返回队列元素个数成员函数int size()类的结构class my_queue { public: my_queue(int maxsize 100) :maxsize(maxsize) { myqueue new int[maxsize]; assert(myqueue);//断言处理若申请内存失败则引发中断 curSize 0; this-Front 0; tail 0; } ~my_queue() { delete myqueue; } void push(int data); void pop(); int front(); bool empty(); int size(); protected: int maxsize;//最大容量 int* myqueue;//队列数组 int Front; //指向队头元素 int tail;//指向队尾元素 int curSize;//队列中的元素个数 };入队的成员函数void push(int data)void my_queue::push(int data) { if (curSize maxsize) { myqueue[tail] data; curSize; } else cout 队列已满无法插入 endl; }出队的成员函数void pop()void my_queue::pop() { if (curSize 0) { Front; --curSize; } else cout 队列已空无法出队 endl; }获取队头元素成员函数int front()int my_queue::front() { return myqueue[Front]; }判断是否为空成员函数bool empty()bool my_queue::empty() { if (curSize 0) return true; else return false; }返回队列元素个数成员函数int size()int my_queue::size() { return curSize; }总代码#includeiostream #includevector #includestring #includeassert.h using namespace std; class my_queue { public: my_queue(int maxsize 100) :maxsize(maxsize) { myqueue new int[maxsize]; assert(myqueue);//断言处理若申请内存失败则引发中断 curSize 0; this-Front 1; tail 0; } ~my_queue() { delete myqueue; } void push(int data); void pop(); int front(); bool empty(); int size(); protected: int maxsize;//最大容量 int* myqueue;//队列数组 int Front; //指向队头元素 int tail;//指向队尾元素 int curSize;//队列中的元素个数 }; int main() { int temp[] { 3,5,7,1,3,6 }; my_queue que(20); for (int i 0; i 6; i) que.push(temp[i]); while (que.empty() ! true) { cout que.front() endl; que.pop(); } return 0; } void my_queue::push(int data) { if (curSize maxsize) { myqueue[tail] data; curSize; } else cout 队列已满无法插入 endl; } void my_queue::pop() { if (curSize 0) { Front; --curSize; } else cout 队列已空无法出队 endl; } int my_queue::front() { return myqueue[Front]; } bool my_queue::empty() { if (curSize 0) return true; else return false; } int my_queue::size() { return curSize; }测试结果谢谢大家