数据结构-循环队列程序演示

Posted hujianglang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构-循环队列程序演示相关的知识,希望对你有一定的参考价值。

  1 /*
  2 循环队列需要2个参数来确定;
  3 front,rear
  4 1)队列初始化
  5 front和rear的值都为零
  6 2)队列非空
  7 front代表的是队列的第一个元素
  8 rear代表的是队列的最后一个有效元素
  9 3)队列空
 10 front和rear的值相等,但不一定是零
 11 */
 12 
 13 
 14 /*
 15 队列
 16 定义:一种可以实现先进先出的存储结构
 17 分类:
 18 静态队列
 19 链式队列
 20 */
 21 #include <stdio.h>
 22 #include <malloc.h>
 23 
 24 typedef struct Queue
 25 {
 26     int *pBase;
 27     int front;
 28     int rear;
 29 }QUEUE;
 30 
 31 void init(QUEUE *);
 32 bool en_queue(QUEUE*, int val);
 33 void traverse_queue(QUEUE*);
 34 void out_queue(QUEUE *, int*);
 35 bool full_queue(QUEUE*);
 36 bool empty_queue(QUEUE*);
 37 
 38 int main(void)
 39 {
 40     QUEUE Q;
 41     int val;
 42     init(&Q);
 43     en_queue(&Q, 0);
 44     en_queue(&Q, 1);
 45     en_queue(&Q, 2);
 46     en_queue(&Q, 3);
 47     en_queue(&Q, 4);
 48     en_queue(&Q, 5);
 49     en_queue(&Q, 6);
 50     en_queue(&Q, 7);
 51     en_queue(&Q, 8);
 52     traverse_queue(&Q);
 53     if (out_queue(&Q, &val))
 54     {
 55         printf("出队成功,队列出队的元素为:%d
",val);
 56     }
 57     else
 58     {
 59         printf("出队失败!
");
 60     }
 61     traverse_queue(&Q);
 62     return 0;
 63 }
 64 
 65 void init(QUEUE *pQ)
 66 {
 67     pQ->pBase = (int*)malloc(sizeof(int) * 6);
 68     pQ->front = 0;
 69     pQ->rear = 0;
 70 }
 71 
 72 bool en_queue(QUEUE *pQ, int val)
 73 {
 74     if (full_queue(pQ))
 75     {
 76         return false;
 77     }
 78     else
 79     {
 80         pQ->pBase[pQ->rear] = val;
 81         pQ->rear = (pQ->rear + 1) % 6;
 82         return true;
 83     }
 84 }
 85 
 86 bool full_queue(QUEUE*pQ)
 87 {
 88     if (pQ->front == (pQ->rear+1)%6)
 89     {
 90         return true;
 91     }
 92     else
 93     {
 94         return false;
 95     }
 96 }
 97 
 98 void traverse_queue(QUEUE *pQ)
 99 {
100     int i = pQ->front;
101     while (i != pQ->rear)
102     {
103         printf("%d ", pQ->pBase[i]);
104         i = (i + 1) % 6;
105     }
106     return;
107 }
108 
109 bool empty_queue(QUEUE *pQ)
110 {
111     if (pQ->front == pQ->rear)
112     {
113         return true;
114     }
115     else
116     {
117         return false;
118     }
119 }
120 
121 bool out_queue(QUEUE*pQ, int* pVal)
122 {
123     if (empty_queue(pQ))
124     {
125         return false;
126     }
127     else
128     {
129         *pVal = pQ->pBase[pQ->front];
130         pQ->front = (pQ->front + 1) % 6;
131         return true;
132     }
133 }

 

以上是关于数据结构-循环队列程序演示的主要内容,如果未能解决你的问题,请参考以下文章

完全下载文件时,将下载的文件从一个片段传递到另一个片段

# Java 常用代码片段

# Java 常用代码片段

Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示(代码片段

html PHP代码片段: - AJAX基本示例:此代码演示了使用PHP和JavaScript实现的基本AJAX功能。

如何只用队头指针实现顺序循环队列?