队列
#include <iostream>
using namespace std;
class queue
{
private:
int *data;
int size;
int front;
int tail;
public:
//无参构造
queue():size(20)
{
data=new int [size];
front=0;
tail=0;
}
//有参构造
queue(int s)
{
data=new int [size];
size=s;
front=0;
tail=0;
}
~queue()
{
delete []data;
}
//判空
int empty()
{
return front==tail;
}
//判满
int full()
{
return (tail+1)%size==front;
}
//赋值给容器适配器
queue& operator=(queue &R)
{
delete [] this;
data=new int[R.size];
size=R.size;
front=R.front;
tail=R.tail;
return *this;
}
//访问第一个元素
int get()
{
if(empty())
{
cout<<"队列是空的"<<endl;
return -1;
}
return data[front];
}
//访问最后一个元素
int get_tail()
{
if(empty())
{
cout<<"队列是空的"<<endl;
return -1;
}
return data[tail-1];
}
//返回容纳的元素数
int get_size()
{
return size;
}
//向队列尾部插入元素
void push(int e)
{
//判断逻辑
if(full())
{
cout<<"插入失败"<<endl;
}
//入队逻辑
data[tail]=e;
//队尾后移
tail=(tail+1)%size;
cout<<"入队成功"<<endl;
}
//删除首个元素
void pop()
{
if(empty())
{
cout<<"删除失败"<<endl;
}
front=(front+1)%size;
}
//输出栈中的元素
void show()
{
//判断逻辑
if(empty())
{
cout<<"输出失败"<<endl;
return;
}
for(int i=front;i!=tail;i=(i+1)%size)
{
cout<<data[i]<<" ";
}
cout<<endl;
}
};
int main()
{
queue q;
q.push(3);
q.push(4);
q.push(5);
q.push(7);
q.show();
cout<<"第一个成员是"<<q.get()<<endl;
cout<<"最后一个成员是"<<q.get_tail()<<endl;
cout<<"*******"<<endl;
//删除首个元素
q.pop();
q.show();
//赋值
queue q1;
q1=q;
q1.show();
return 0;
}
思维导图