数据结构——14 循环队列

来源:互联网 发布:1hhh域名升级访问 编辑:程序博客网 时间:2024/05/18 09:31

队列——循环队列


数组描述中,每次出队后,将其余元素往前移动一个位置,让a[0]始终是队的第一个元素

#include <iostream>using namespace std;class queue{public:queue():maxSize(5),size(0)       //构造函数初始化队列里元素的个数为0,并初始化队列可以装5个元素{a=new int[maxSize];}    ~queue();                           //析构函数删除队列int dequeue();                      //出队void enqueue(int n);                //进对private:    int size;                           //队列里元素的个数int maxSize;                        //队列能装下的最大元素个数int *a;};queue::~queue()                           {  delete[] a;                         //析构,释放内存            }void queue::enqueue(int n)              //入队操作,增加一个元素放在队尾{    if(size==maxSize)                   //如果数组装不下了,就增加10个位置{maxSize+=10;int *p=new int[maxSize]; for(int i=0;i<=size;i++)p[i]=a[i];delete[] a;a=p;}a[size++]=n;}int queue::dequeue()              //出对操作,返回出队列第一个元素,即数组的a[0]{    int out;                      //返回值if(size)                      //用size判断是否栈里还有元素{out=a[0];for(int i=0;i<size-1;i++)a[i]=a[i+1];size--;        return out;}else{cout<<"队列已经为空!"<<endl;exit(0);}}int main(){  queue que;  cout<<"The enqueue of que are: ";  for(int i=1;i<=20;i++)  {  cout<<i<<"  ";  que.enqueue(i);  }  cout<<endl;  cout<<"The dequeue of que are: ";  for(i=1;i<=15;i++)    cout<<que.dequeue()<<"  ";cout<<endl;  return 0;}


0 0