根据输入的操作命令,操作队列:1 入队、2 出队并输出、3 计算队中元素个数并输出。1≤N≤50。
输入格式:
第一行一个数字 N。 接下来 N 行,每行第一个数字为操作命令:1入队、2 出队并输出、3 计算队中元素个数并输出。
输出格式:
若干行每行显示一个 2 或 3 命令的输出结果。注意:2.出队命令可能会出现空队出队(下溢),请输出“no”,并退出。
输入样例:
在这里给出一组输入。例如:
7
1 19
1 56
2
3
2
3
2
输出样例:
在这里给出相应的输出。例如:
19
1
56
0
no
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
代码:
#include<stdio.h>
#include<malloc.h>
typedef struct qu{
int data;
struct qu * next;
}QU;
typedef struct QS{
QU *front,*roil;
int length;
}QS;
void creat(QS *Q){
Q->front=Q->roil=(QU*)malloc(sizeof(QU));
Q->length=0;
Q->front->next=NULL;
}
void into(QS *Q,int x){
QU *p=(QU*)malloc(sizeof(QU));
p->next=NULL;
p->data=x;
Q->roil->next=p;
Q->roil=p;
Q->length+=1;
}
int out(QS *Q){
int x;
QU *p=Q->front->next->next;
x=Q->front->next->data;
free(Q->front->next);
Q->front->next=p;
Q->length-=1;
return x;
}
int main(){
int n;
if(scanf("%d",&n)){}
QS *Q;
Q=(QS*)malloc(sizeof(QS));
creat(Q);
for(int i=0;i<n;i++){
int m,k,x;
scanf("%d",&m);
switch(m){
case 1:
scanf("%d",&k);
into(Q,k);
break;
case 2:
if(Q->length<=0)
printf("no\n");
else{
x=out(Q);
printf("%d\n",x);
}
break;
case 3:
printf("%d\n",Q->length);
break;
}
}
return 0;
}