队列基本操作
-
总时间限制:
- 1000ms 单个测试点时间限制:
- 500ms 内存限制:
- 5000kB
-
描述
-
输入若干个整数(小于50个),整数共有四种类型,不同类型的整数代表不同操作。说明如下:
1、[10,99]之间的整数:将该整数入队。
2、-1: 队首整数出队。
3、-2: 显示队列所有整数。
4、-3: 输入结束。
说明:采用链队列实现,必须有队列初始化函数、入队函数、出队函数。
输入
- 第一行若干整数(必须满足上述四种类型要求),以-3结束。 输出
- 输出队列中所有整数。 样例输入
-
13 25 90 -1 12 -2 -1 45 78 30 -2 -3
样例输出
-
25 90 12
90 12 45 78 30
-
-
#include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 20 typedef int Status; typedef int QElemType; typedef struct QNode /* ½áµã½á¹¹ */ { QElemType data; struct QNode *next; }QNode,*QueuePtr; typedef struct /* ¶ÓÁеÄÁ´±í½á¹¹ */ { QueuePtr front,rear; /* ¶ÓÍ·¡¢¶ÓβָÕë */ }LinkQueue; Status InitQueue(LinkQueue *Q) { Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode)); Q->front->next=NULL; return OK; } Status EnQueue(LinkQueue *Q,QElemType e) { QueuePtr s=(QueuePtr)malloc(sizeof(QNode)); s->data=e; s->next=NULL; Q->rear->next=s; /* °ÑÓµÓÐÔªËØ e µÄнáµã s ¸³Öµ¸øÔ¶Óβ½áµãµÄºó¼Ì */ Q->rear=s; /* °Ñµ±Ç°µÄ s ÉèÖÃΪ¶Óβ½áµã£¬rear Ö¸Ïò s*/ return OK; } Status DeQueue(LinkQueue *Q) { QueuePtr p; if(Q->front==Q->rear) return ERROR; p=Q->front->next; /* ½«Óûɾ³ýµÄ¶ÓÍ·½áµãÔÝ´æ¸ø p*/ //*e=p->data; /* ½«Óûɾ³ýµÄ¶ÓÍ·½áµãµÄÖµ¸³Öµ¸ø e */ Q->front->next=p->next;/* ½«Ô¶ÓÍ·½áµãµÄºó¼Ì p->next ¸³Öµ¸øÍ·½áµãºó¼Ì*/ if(Q->rear==p) /* Èô¶ÓÍ·¾ÍÊǶÓ⣬Ôòɾ³ýºó½« rear Ö¸ÏòÍ·½áµã*/ Q->rear=Q->front; free(p); return OK; } Status visit(QElemType c) { printf("%d ",c); return OK; } Status QueueTraverse(LinkQueue Q) { QueuePtr p; p=Q.front->next; while(p) { visit(p->data); p=p->next; } printf("\n"); return OK; } int main() { LinkQueue q; InitQueue(&q); int n; scanf("%d",&n); while(n!=-3) { if(10<=n&&n<=99) { EnQueue(&q,n); } else if(n==-1) { DeQueue(&q); } else if(n==-2) { QueueTraverse(q); } scanf("%d",&n); } return 0; }
1038



被折叠的 条评论
为什么被折叠?



