数据结构——队列的使用

小灰灰 2022-07-11 13:27 284阅读 0赞

TOJ 4368

描述

请你定义一个队列,可以对队列进行“入队”、“出队”、“队列输出”等操作。键盘输入一些命令,可以执行上述操作。本题中,队列中元素均为整数。队列的最大元素个数为1000。

输入

输入各个命令,它们对应的格式如下:

入队:enq x,x代表入队的元素,这里enq和元素之间用空格分隔。

队列输出:printq

出队:deq

当输入的命令为exit时,程序结束。

输出

当输入的命令为deq时,请输出出队列的元素值。

当输入的命令是printq时,请输出队列中所有元素的值。

注意,如果没有满足的元素,请输出None。

样例输入

enq 1 enq 2 printq deq printq deq printq exit

样例输出

1 2 1 2 2 None

这题比栈那题坑少多了,就是注意一下循环输出的时候,最后一位是tail-1,不是tail~

  1. #include <stdio.h>
  2. #include <string.h>
  3. int q[1001],tail,head;
  4. void enqueue(int x)
  5. {
  6. q[tail]=x;
  7. tail=(tail+1)%1000;
  8. }
  9. int dequeue()
  10. {
  11. int x;
  12. x=q[head];
  13. head=(head+1)%1000;
  14. return x;
  15. }
  16. int main()//4368
  17. {
  18. char a[10];
  19. int n,j;
  20. head=tail=0;
  21. while(scanf("%s",a))
  22. {
  23. if(strcmp(a,"exit")==0)break;
  24. if(strcmp(a,"enq")==0)
  25. {
  26. scanf("%d",&n);
  27. enqueue(n);
  28. }
  29. else if(strcmp(a,"printq")==0)
  30. {
  31. if(head==tail)
  32. printf("None\n");
  33. else
  34. {
  35. for(j=head;j<tail-1;j++)
  36. printf("%d ",q[j]);
  37. printf("%d\n",q[tail-1]);
  38. }
  39. }
  40. else if(strcmp(a,"deq")==0)
  41. {
  42. if(head==tail)
  43. printf("None\n");
  44. else
  45. printf("%d\n",dequeue());
  46. }
  47. }
  48. }

发表评论

表情:
评论列表 (有 0 条评论,284人围观)

还没有评论,来说两句吧...

相关阅读

    相关 基本操作 数据结构

    队列(queue)也是线性表的一种特殊情况,其所有的插入均限定在表的一端进行,而所有的删除则限定在表的另一端进行。允许插入的一端称队尾(rear),允许删除的一端称队头(fro

    相关 数据结构——使用

    TOJ 4368 描述 请你定义一个队列,可以对队列进行“入队”、“出队”、“队列输出”等操作。键盘输入一些命令,可以执行上述操作。本题中,队列中元素均为整数。队列的最大元