标签:data- data 队列 构造 允许 ase 没有 nbsp 入队
描述
如果允许在循环队列的两端都可以进行插入和删除操作。构造一个循环队列,实现从队头入队,从队尾出队并输出。约定从队头入队时向下标小的方向发展,从队尾入队时则向下标大的方向发展。
输入
多组数据,每组数据有两行。第一行为一个整数n,n表示入队序列A的长度(n个数依次连续入队,中间没有出队的情况),第二行为序列A(空格分隔的n个整数)。当n等于0时,输入结束。
输出
对应每组数据输出一行。依次输出队列中所有的整数,每两个整数之间用空格分隔。
输入样例 1
5 1 2 3 4 5 2 1 4 0
输出样例 1
1 2 3 4 5 1 4
最后的输出是那样是因为oj的固定要求,无特殊含义
#include<iostream> using namespace std; #define MAXSIZE 10000 typedef struct{ int *base; int front; int rear; }SqQueue; int Init(SqQueue &Q){ Q.base=new int[MAXSIZE]; if(!Q.base) return 0; Q.front=Q.rear=0; return 1; } int EnQueue(SqQueue &Q,int e){ if(Q.rear==(Q.front)+1%MAXSIZE) return 0; Q.base[Q.front]=e; Q.front=(Q.front-1+MAXSIZE)%MAXSIZE; return 1; } int DeQueue(SqQueue &Q,int &e){ if(Q.front==Q.rear) return 0; e=Q.base[Q.rear]; Q.rear=(Q.rear-1+MAXSIZE)%MAXSIZE; return 1; } int main(){ while(1){ int n; cin>>n; if(n==0) return 0; SqQueue Q; Init(Q); for(int i=0;i<n;i++){ int e; cin>>e; EnQueue(Q,e); } n--; while(n--){ int e; DeQueue(Q,e); cout<<e<<‘ ‘; } int e; DeQueue(Q,e); cout<<e<<endl; } }
标签:data- data 队列 构造 允许 ase 没有 nbsp 入队
原文地址:https://www.cnblogs.com/director-yu-youki/p/14005743.html