循环队列代码演示
循环队列代码掩饰
/*
循环队列代码
*/
#include <stdio.h>
#include <malloc.h>
typedef int bool;
#define false 0
#define true 1
//循环队列结构体
typedef struct Queue
{
int *pBase;
int front;
int rear;
}Queue;
int glength; //队列长度
//队列这种数据结构中的一些功能函数
void init_queue(Queue *queue);
bool enter_queue(Queue *queue, int val);
void show_queue(Queue *queue);
bool full_queue(Queue *queue);
bool out_queue(Queue *queue, int *val);
bool empty_queue(Queue *queue);
int main(void)
{
Queue queue;
int val;
glength = 6;
init_queue(&queue);
enter_queue(&queue, 4);
enter_queue(&queue, 5);
enter_queue(&queue, 6);
enter_queue(&queue, 1);
show_queue(&queue);
out_queue(&queue, &val);
show_queue(&queue);
printf("出队的元素值为:%d\n", val);
return 0;
}
/*
函数名:init_queue
作用:初始化一个队列
输入:Queue *queue
输出:无
*/
void init_queue(Queue *queue)
{
queue->pBase = (int *)malloc(sizeof(int) * glength);
if (queue->pBase == NULL)
{
return;
}
queue->front = queue->rear = 0;
return;
}
/*
函数名:enter_queue
作用:相对列中加入一个元素
输入:Queue *queue, int val(加入队列中的值)
输出:true/false(加入队列是否成功)
*/
bool enter_queue(Queue *queue, int val)
{
if (full_queue(queue))
{
printf("队列已满\n");
return false;
}
queue->pBase[queue->rear] = val;
queue->rear += 1;
return true;
}
/*
函数名:empty_queue
作用:检测队列是否为空
输入:Queue *queue
输出:true(队列为空)/false
*/
bool empty_queue(Queue *queue)
{
if (queue->rear == queue->front)
{
return true;
}
else
return false;
}
/*
函数名:full_queue
作用:检测队列是否已满
输入:Queue *queue
输出:true(队列已满)/false
*/
bool full_queue(Queue *queue)
{
if ((queue->rear + 1) % glength == queue->front)
{
return true;
}
else
return false;
}
/*
函数名:show_queue
作用:展示队列中的元素
输入:Queue *queue
输出:无
*/
void show_queue(Queue *queue)
{
int p;
if (empty_queue(queue))
{
printf("队列为空\n");
return;
}
p = queue->front;
printf("队列中的元素为:");
while (p != queue->rear)
{
printf("%d、", queue->pBase[p]);
p += 1;
}
printf("\n");
return;
}
/*
函数名:out_queue
作用:从队列中出一个元素
输入:Queue *queue, int *val(承接出队列元素的数值)
输出:true/false(元素出队列是否成功)
*/
bool out_queue(Queue *queue, int *val)
{
int p = queue->front;
if (empty_queue(queue))
{
printf("队列为空\n");
return false;
}
*val = queue->pBase[p];
queue->front += 1;
return true;
}
我们向往远方,却忽略了此刻的美丽