SeqCQueue.h
上传用户:hbxtsdjs
上传日期:2022-04-11
资源大小:1594k
文件大小:1k
源码类别:

电子书籍

开发平台:

C/C++

  1. typedef struct
  2. {
  3. DataType queue[MaxQueueSize];
  4. int rear; /*队尾指针*/
  5. int front; /*队头指针*/
  6. } SeqCQueue; 
  7. void QueueInitiate(SeqCQueue *Q) /*初始化顺序循环队列Q*/
  8. {
  9. Q->rear = 0; /*定义初始队尾指针下标值*/
  10. Q->front = 0; /*定义初始队头指针下标值*/
  11. }
  12. int QueueNotEmpty(SeqCQueue Q)
  13. /*判顺序循环队列Q非空否,非空则返回1,否则返回0*/
  14. {
  15. if(Q.front == Q.rear) return 0;
  16. else return 1;
  17. }
  18. int QueueAppend(SeqCQueue *Q, DataType x)
  19. /*把数据元素值x插入顺序循环队列Q的队尾,成功返回1,失败返回0 */
  20. {
  21. if((Q->rear+1) % MaxQueueSize == Q->front)
  22. {
  23. printf("队列已满无法插入! n");
  24. return 0;
  25. }
  26. else
  27. {
  28. Q->queue[Q->rear] = x;
  29. Q->rear = (Q->rear + 1) % MaxQueueSize;
  30. return 1;
  31. }
  32. }
  33. int QueueDelete(SeqCQueue *Q, DataType *d)
  34. /*删除顺序循环队列Q的队头元素并赋给d ,成功返回1,失败返回0*/
  35. {
  36. if(Q->front == Q->rear)
  37. {
  38. printf("循环队列已空无数据元素出队列! n");
  39. return 0;
  40. }
  41. else
  42. {
  43. *d = Q->queue[Q->front];
  44. Q->front = (Q->front + 1) % MaxQueueSize;
  45. return 1;
  46. }
  47. }
  48. int QueueGet(SeqCQueue Q, DataType *d)
  49. /*取顺序循环队列Q的当前队头元素并赋给d ,成功返回1,失败返回0*/
  50. {
  51. if(Q.front == Q.rear)
  52. {
  53. printf("循环队列已空无数据元素可取! n");
  54. return 0;
  55. }
  56. else
  57. {
  58. *d = Q.queue[Q.front];
  59. return 1;
  60. }
  61. }