解题思路:使用链队列
注意事项:
参考代码:
#include<stdio.h>
#include<stdlib.h>
#define stype int
typedef struct node{
struct node *next;
stype num;}data;
typedef struct{
data *front;
data *rear;}Linkqueue;
int initqueue(Linkqueue *L)
{
L->front=L->rear=(data *)malloc(sizeof(data));
if(!L->front)
{
exit(0);
return 0;
}
else
{
L->front->next=NULL;
return 1;
}
}
int insertqueue(Linkqueue *L,stype x)
{
data *s;
s=(data *)malloc(sizeof(data));
if(!s)
{
exit(0);
return 0;
}
else
{
s->num=x;
s->next=NULL;
L->rear->next=s;
L->rear=s;
return 1;
}
}
int deletequeue(Linkqueue *L,stype *x)
{
data *s;
if(L->front==L->rear)
return 0;
else
{
s=L->front->next;
*x=s->num;
L->front->next=s->next;
free(s);
if(L->front->next==NULL)
L->rear=L->front;
return 1;
}
}
int queuelenth(Linkqueue *L)
{
data *pa;
int i=0;
for(pa=L->front->next;pa;pa=pa->next)
i++;
return i;
}
int main()
{
Linkqueue L;
int n,k,m,num,x,y,j,i;
int a[100][5];
k=0;
j=0;
initqueue(&L); //对队列进行初始化
scanf("%d",&n);
while(k<n)
{
scanf("%d",&m);
if(m==1)
{
scanf("%d",&num);
insertqueue(&L,num);
}
else if(m==2)
{
y=deletequeue(&L,&x);
if(y==0)
a[j++][0]=-2;
else
{
a[j][0]=-1;
a[j][1]=x;
j++;
}
}
else if(m==3)
{
y=queuelenth(&L);
a[j++][0]=y;
}
k++;
}
for(i=0;i<j;i++)
{
if(a[i][0]==-2)
{
printf("no\n");
break;
}
if(a[i][0]==-1)
{
printf("%d\n",a[i][1]);
}
else
printf("%d\n",a[i][0]);
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复