1、队列:先进先出FIFO
2、数据模型:
struct queue
{
数据容器[队列长度];
rear;//队尾
front;//队头
};
3、功能:
初始化initQueue()
进队 EnQueue()
出队 DeQueue()
判断队为空 isEmpty()
判断队为满 isFull()
判断队列长度 QueueLenth()
清空队列 ClearQueue()
4、假满:由于通过rear指向尾处来进行判断是否为满,一当有队头元素出队时,队列不再为满。
if(rear==MAXSIZE-1) 满
if(front==rear) 空
5、解决方法:循环队列
核心:
头指针:指向第一个非空
尾指针:指向第一个空
满:(rear+1)%MAXSIZE==front 浪费一个空间来获得判断队满条件
空:front==rear
队长:(rear-fornt+MAXSIZE)%MAXSIZE
实现代码
头文件
#ifndef _QUEUE_DEF_
#define _QUEUE_DEF_
#include<stdbool.h>
#define MAXSIZE 10
//前置声明
struct queue;
struct patient;
typedef struct patient QueueType;
//重命名struct queue;
typedef struct queue Queue;
struct patient
{
char name[10];//姓名
short sex; //姓别 0男 1女
char dp