顺序队列的创建、初始化、判断空、入队、出队、读取队头元素、置空、求队长操作
代码如下:
//队列的顺序存储
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define MAXSIZE 100 //顺序队列的最大容量
typedef int DataType;
//#define DataType int
typedef struct{
DataType data[MAXSIZE];
int front,rear;
}SeQueue;
void Init_Queue(SeQueue *&q) //队列的初始化
{
q=(SeQueue*)malloc(sizeof(SeQueue));
q->front=0;
q->rear=0;
}
int Queue_Empty(SeQueue *q) //当队列为空时,返回1,非空时,返回0
{
if(q->front==q->rear)
return 1;
else
return 0;
}
void Push_Queue(SeQueue *q,DataType x) //将元素x插入到队列中
{
if((q->rear+1)%MAXSIZE==q->front) //判断队列是否是满的
printf("Queue full\n");
else
{
q->rear=(q->rear+1)%MAXSIZE;
q->data[q->rear]=x;
}
}
void GetHead_Queue(SeQueue *q) //读取队头元素
{
DataType x;
if(Queue_Empty(q))
printf("Queue is Empty\n");
else
printf("%d\n",q->data[(q->front+1)%MAXSIZE]);
}
void Pop_Queue(SeQueue *q) //出队
{
if(Queue_Empty(q))
printf("Queue is Empty\n");
else
{
q->front=(q->front+1)%MAXSIZE;
}
}
void Clear_Queue(SeQueue *q) //队列置空操作
{
q->front=0;
q->rear=0;
}
void Queue_Length(SeQueue *q) //求队列长度的操作
{
int len;
len=(q->rear-q->front+MAXSIZE)%MAXSIZE;
printf("Queue Length is %d\n",len);
}
int main()
{
SeQueue *q; //定义、初始化顺序队列
Init_Queue(q);
Push_Queue(q,1); //入队操作
Push_Queue(q,2);
Push_Queue(q,3);
GetHead_Queue(q);
Queue_Length(q);
Pop_Queue(q); //出队操作
GetHead_Queue(q);
Queue_Length(q);
return 0;
}