#include <stdio.h>
#include <malloc.h>
//队列长度 只能存放5个元素
int length = 6;
typedef struct SQueue
{
int *Pbase;
int front;
int rear;
} * PQueue, Queue;
// 初始化队列
void init_queue(PQueue);
// 判断队列是否已满
bool full_queue(PQueue);
// 判断队列是否为空
bool empty_queue(PQueue);
// 入队
bool en_queue(PQueue, int);
// 出队
bool out_queue(PQueue, int *);
// 输出队列信息
void show_queue(PQueue);
int main()
{
PQueue pQueue=(PQueue)malloc(sizeof(Queue)*length);
init_queue(pQueue);
en_queue(pQueue, 1);
en_queue(pQueue, 2);
en_queue(pQueue, 3);
en_queue(pQueue, 4);
en_queue(pQueue, 5);
en_queue(pQueue, 6);
show_queue(pQueue);
int val;
if (out_queue(pQueue, &val))
{
printf("出队成功,出队的元素是:%d\n", val);
}
show_queue(pQueue);
if (en_queue(pQueue, 6))
{
printf("入队成功!\n");
}
show_queue(pQueue);
}
void init_queue(PQueue pQueue)
{
pQueue->Pbase = (int *)malloc(sizeof(int) * length);
pQueue->front = 0;
pQueue->rear = 0;
}
bool full_queue(PQueue pQueue)
{
if ((pQueue->rear + 1) % length == pQueue->front)
{
return true;
}
else
{
return false;
}
}
bool empty_queue(PQueue pQueue)
{
if (pQueue->front == pQueue->rear)
{
return true;
}
else
{
return false;
}
}
bool en_queue(PQueue pQueue, int val)
{
if (full_queue(pQueue))
{
return false;
}
pQueue->Pbase[pQueue->rear] = val;
pQueue->rear = (pQueue->rear + 1) % length;
return true;
}
bool out_queue(PQueue pQueue, int *val)
{
if (empty_queue(pQueue))
{
return false;
}
*val = pQueue->Pbase[pQueue->front];
pQueue->front = (pQueue->front + 1) % length;
return true;
}
void show_queue(PQueue PQueue)
{
int i = PQueue->front;
while (i != PQueue->rear)
{
printf("%d\t", PQueue->Pbase[i]);
i = (i + 1) % length;
}
printf("\n");
}
C++实现循环队列
最新推荐文章于 2024-07-24 14:05:37 发布