队列的定义与特点
和栈相反,队列是一种先进先出(FIrst In First Out,FIFO)。它只允许在表的一端进行插入(表尾),在另一端删除元素(表头)。循环顺序队列较为常见。若无法估计队列长度,可以用链式队列。
循环队列的表示和操作的实现
#include<stdio.h>
#include<stdlib.h>
#define MAXQSIZE 100 //最大队列长度
typedef struct{
int* base;
int front;//头指针 队头元素下标
int rear;//尾指针 队尾元素下标
}SqQueue;
//队列初始化
void InitQueue(SqQueue* Q)
{
Q->base=(int*)malloc(MAXQSIZE*sizeof(int));//分配数组空间
if(!Q->base)
exit(0);//存储分配失败
Q->front=Q->rear=0;
}
//求循环队列的长度
int QueueLength(SqQueue Q)
{
return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
}
//入队
int EnQueue(SqQueue* Q,int e)
{
if((Q->rear+1)%MAXQSIZE==Q->front)//队满
ret