队列(数组模拟)

来源:互联网 发布:谷歌域名 编辑:程序博客网 时间:2024/06/01 18:10
#include<iostream>using namespace std;void clean(int *s,int n)//将队列清空{    for(int i=0;i<=n;i++)        s[i]=0;}bool queue_empty(int *s)//检查队列是否为空{    if(s[0]==0)        return 1;//空返回1    else return 0;//非空返回0}void push(int *s,int x,int len)//入队操作,x为入队的数据,len为队列长度{    if(s[0]!=len)    s[++s[0]]=x;    else    {        for(int i=1;i<=len-1;i++)            s[i]=s[i+1];        s[s[0]]=x;    }}int pop(int *s)//出队操作{    if(queue_empty(s))//如果是空队列,就没法出队了        cout<<"出队失败"<<endl;    else//如果不是空队,就出队    {        s[0]--;        return s[s[0]+1];//返回弹出的值    }}void print(int *s)//遍历队列{    for(int i=1;i<=s[0];i++)        cout<<s[i]<<" ";    cout<<endl;}int main(){    int n;    cin>>n;//n为队列的大小    int *s=new int[n+1];    clean(s,n+1);    for(int i=1;i<=2*n;i++)    {        push(s,i,n);        print(s);    }    for(int i=1;i<=n;i++)    {        pop(s);        print(s);    }}
0 0
原创粉丝点击