//头文件
#include<stdio.h>
#include<stdlib.h>
#define N 100 //宏定义队列的大小
#define datatype char //定义队列数据类型
struct queue
{
datatype data[N];
int front; //队列开头
int rear; //队列结尾
};
typedef struct queue Q;
void init(Q *MyQueue); //初始化队列
int isEmpty(Q *MyQueue); //判断是否队列为空
void enQueue(Q *MyQueue, datatype num); //入队
datatype deQueue(Q *MyQueue); //出队
void printQueue(Q *MyQueue); //打印队列成员
datatype getHead(Q *MyQueue); //取得队首元素
//queue.c 文件
#include "queue.h"
//队列先入先出
void init(Q *MyQueue)//初始化结构体
{
//一开始队列为空,那么front=rear = 0
MyQueue->front = MyQueue->rear = 0;
}
int isEmpty(Q *MyQueue)
{
if (MyQueue->front == MyQueue->rear)
{
return 1; //返回真 说明时空的
}
else
{
return 0;
}
}
void enQueue(Q *MyQueue, datatype num)
{
if (N == MyQueue->rear)
{
printf("入队列失败\n");
return; //入队列失败
}
else
{
MyQueue->data[MyQueue->rear] = num; //先赋值在增加
MyQueue->rear += 1;
}
}
datatype deQueue(Q *MyQueue)//出队
{
if (MyQueue->front == MyQueue->rear)
{
//队列空
printf("出队列失败!\n");
return -1;
}
else
{
MyQueue->front += 1;
//返回出队列的元素
return MyQueue->data[MyQueue->front - 1];
}
}
void printQueue(Q *MyQueue)//打印队列成员
{
printf("\n");
if (MyQueue->front == MyQueue->rear)
{
printf("队列为空!\n");
}
else
{
for (int i = MyQueue->front; i < MyQueue->rear; i++)
{
printf("%c ", MyQueue->data[i]);
}
}
}
datatype getHead(Q *MyQueue)
{
if (MyQueue->front == MyQueue->rear)
{
printf("队列为空!无法找到首出队的数\n");
return -1;
}
else
{
return MyQueue->data[MyQueue->front];
}
}