#include <stdio.h>
#include <malloc.h>
typedef struct Queue
{
int * pBase;//数组首地址 pBase
int front;
int rear;
}QUEUE;
void init(QUEUE *);//初始化
int en_queue(QUEUE *,int val);//入队
int full_queue(QUEUE *);//队列是否已满
void traverse_queue(QUEUE *);//遍历输出
int empty(QUEUE * pQ);//是否为空
int out_queue(QUEUE *, int *);//出队
int main(void)
{
QUEUE Q;
int val;
init(&Q);
en_queue(&Q, 1);
en_queue(&Q, 2);
en_queue(&Q, 3);
en_queue(&Q, 4);
en_queue(&Q, 5);
traverse_queue(&Q);
en_queue(&Q, 6);
en_queue(&Q, 7);
out_queue(&Q, &val);
traverse_queue(&Q);
printf("out queue is %d \n", val);
return 0;
}
//初始化
void init(QUEUE *pQ)
{
pQ->pBase = (int *)malloc(sizeof(int) * 6);//数组
pQ->front = 0;
pQ->rear = 0;
}
//队列是否已满
int full_queue(QUEUE * pQ)
{
if((pQ->rear + 1) % 6 == pQ->front)
{
printf("queue is full!\n");
return 1;
}
else
{
return 0;
}
}
//放值
int en_queue(QUEUE *pQ,int val)
{
if (full_queue(pQ))
{
printf("en_queue fail!\n");
return 0;
}
else
{
pQ->pBase[pQ->rear] = val;
pQ->rear = (pQ->rear + 1) % 6;
return 1;
}
}
//遍历输出
void traverse_queue(QUEUE * pQ)
{
int i = pQ->front;
while (i != pQ->rear)
{
printf("%d ", pQ->pBase[i]);
i = (i + 1) % 6;
}
printf("\n");
return;
}
//是否为空
int empty(QUEUE * pQ)
{
if (pQ->front == pQ->rear)
return 1;
else
return 0;
}
//出队
int out_queue(QUEUE * pQ, int * pVal)
{
if(empty(pQ))
{
return 0;
}
else
{
*pVal = pQ->pBase[pQ->front];//存值
pQ->front = (pQ->front + 1) % 6;
return 1;
}
}
数据结构与算法基础-队列-静态队列-代码演示
最新推荐文章于 2024-08-05 00:04:51 发布