完整代码
目录
Queue.h
#pragma once
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define MaxSize 6
typedef int DataType;
typedef struct
{
DataType queue[MaxSize];
int front;
int rear;
int count;
}SeqQueue;
//初始化顺序循环队列
void QueueInitiate(SeqQueue* q);
//非空否
int QueueNotEmpty(SeqQueue q);
//入队列
int QueueAppend(SeqQueue* q, DataType x);
//出队列
int QueueDelete(SeqQueue* q, DataType* d);
//取队头元素
int QueueGet(SeqQueue q, DataType* d);
Queue.c
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include"Queue.h"
void QueueInitiate(SeqQueue* q)
{
q->front = 0;
q->rear = 0;
q->count = 0;
}
int QueueNotEmpty(SeqQueue q)
{
if (q.count == 0)
{
printf("队列为空");
return 0;
}
else
{
return 1;
}
}
//front指向的是当前队列队头元素的位置,rear指向的是当前队尾元素的下一个位置
int QueueAppend(SeqQueue* q, DataType x)
{
if (q->count ==MaxSize)
{
printf("队列已满");
return 0;
}
else
{
q->queue[q->rear] = x;
q->rear = (q->rear + 1) % MaxSize;
q->count++;
return 1;
}
}
int QueueDelete(SeqQueue* q, DataType* d)
{
if (q->front == q->rear)
{
printf("队列为空");
return 0;
}
else
{
*d = q->queue[q->front];
q->front = (q->front + 1) % MaxSize;
q->count--;
return 1;
}
}
int QueueGet(SeqQueue q, DataType* d)
{
if (q.count == 0)
{
printf("队列为空");
return 0;
}
else
{
*d = q.queue[q.front];
return 1;
}
}