073.队列实例

举报
C语言与CPP编程 发表于 2022/05/02 00:44:19 2022/05/02
【摘要】 #include <string.h>#include <stdlib.h>#include <stdio.h>#include <ctype.h> #define MAX 100 char *p[MAX], *qretrieve(void);int spos = 0;int rpos =...

  
  1. #include <string.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <ctype.h>
  5. #define MAX 100
  6. char *p[MAX], *qretrieve(void);
  7. int spos = 0;
  8. int rpos = 0;
  9. void enter(void), qstore(char *q), review(void), delete_ap(void);
  10. int main(void)
  11. {
  12. char s[80];
  13. register int t;
  14. for(t=0; t < MAX; ++t) p[t] = NULL; /* init array to nulls */
  15. for(;;) {
  16. printf("Enter, List, Remove, Quit: ");
  17. gets(s);
  18. *s = toupper(*s);
  19. switch(*s) {
  20. case 'E':
  21. enter();
  22. break;
  23. case 'L':
  24. review();
  25. break;
  26. case 'R':
  27. delete_ap();
  28. break;
  29. case 'Q':
  30. exit(0);
  31. }
  32. }
  33. return 0;
  34. }
  35. /* Enter appointments in queue. */
  36. void enter(void)
  37. {
  38. char s[256], *p;
  39. do {
  40. printf("Enter appointment %d: ", spos+1);
  41. gets(s);
  42. if(*s==0) break; /* no entry */
  43. p = (char *) malloc(strlen(s)+1);
  44. if(!p) {
  45. printf("Out of memory.\n");
  46. return;
  47. }
  48. strcpy(p, s);
  49. if(*s) qstore(p);
  50. } while(*s);
  51. }
  52. /* See what's in the queue. */
  53. void review(void)
  54. {
  55. register int t;
  56. for(t=rpos; t < spos; ++t)
  57. printf("%d. %s\n", t+1, p[t]);
  58. }
  59. /* Delete an appointment from the queue. */
  60. void delete_ap(void)
  61. {
  62. char *p;
  63. if((p=qretrieve())==NULL) return;
  64. printf("%s\n", p);
  65. }
  66. /* Store an appointment. */
  67. void qstore(char *q)
  68. {
  69. if(spos==MAX) {
  70. printf("List Full\n");
  71. return;
  72. }
  73. p[spos] = q;
  74. spos++;
  75. }
  76. /* Retrieve an appointment. */
  77. char *qretrieve(void)
  78. {
  79. if(rpos==spos) {
  80. printf("No more appointments.\n");
  81. return NULL;
  82. }
  83. rpos++;
  84. return p[rpos-1];
  85. }

文章来源: blog.csdn.net,作者:程序员编程指南,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_41055260/article/details/124518307

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。