当前位置:   article > 正文

大话数据结构源代码-----顺序队列_大话数据结构源码

大话数据结构源码
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "math.h"
  4. #include "time.h"
  5. #define OK 1
  6. #define ERROR 0
  7. #define TRUE 1
  8. #define FALSE 0
  9. #define MAXSIZE 20 /* 存储空间初始分配量 */
  10. typedef int Status;
  11. typedef int QElemType; /* QElemType类型根据实际情况而定,这里假设为int */
  12. /* 循环队列的顺序存储结构 */
  13. typedef struct
  14. {
  15. QElemType data[MAXSIZE];
  16. int front; /* 头指针 */
  17. int rear; /* 尾指针,若队列不空,指向队列尾元素的下一个位置 */
  18. }SqQueue;
  19. Status visit(QElemType c)
  20. {
  21. printf("%d ",c);
  22. return OK;
  23. }
  24. /* 初始化一个空队列Q */
  25. Status InitQueue(SqQueue *Q)
  26. {
  27. Q->front=0;
  28. Q->rear=0;
  29. return OK;
  30. }
  31. /* 将Q清为空队列 */
  32. Status ClearQueue(SqQueue *Q)
  33. {
  34. Q->front=Q->rear=0;
  35. return OK;
  36. }
  37. /* 若队列Q为空队列,则返回TRUE,否则返回FALSE */
  38. Status QueueEmpty(SqQueue Q)
  39. {
  40. if(Q.front==Q.rear) /* 队列空的标志 */
  41. return TRUE;
  42. else
  43. return FALSE;
  44. }
  45. /* 返回Q的元素个数,也就是队列的当前长度 */
  46. int QueueLength(SqQueue Q)
  47. {
  48. return (Q.rear-Q.front+MAXSIZE)%MAXSIZE;
  49. }
  50. /* 若队列不空,则用e返回Q的队头元素,并返回OK,否则返回ERROR */
  51. Status GetHead(SqQueue Q,QElemType *e)
  52. {
  53. if(Q.front==Q.rear) /* 队列空 */
  54. return ERROR;
  55. *e=Q.data[Q.front];
  56. return OK;
  57. }
  58. /* 若队列未满,则插入元素e为Q新的队尾元素 */
  59. Status EnQueue(SqQueue *Q,QElemType e)
  60. {
  61. if ((Q->rear+1)%MAXSIZE == Q->front) /* 队列满的判断 */
  62. return ERROR;
  63. Q->data[Q->rear]=e; /* 将元素e赋值给队尾 */
  64. Q->rear=(Q->rear+1)%MAXSIZE;/* rear指针向后移一位置, */
  65. /* 若到最后则转到数组头部 */
  66. return OK;
  67. }

本文源代码来自于程杰老师的《大话数据结构》 供大家学习参考

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/551866
推荐阅读
相关标签
  

闽ICP备14008679号