#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100 //指定队列的容量
typedef char ElemType;
//循环队列的类型声明
typedef struct {
ElemType data[MaxSize]; //基地址
int front; //头指针
int rear; //尾指针
}SqQueue;
// 初始化队列
void InitQueue(SqQueue& sq)
{
sq.front = sq.rear = 0; //初始化尾指针与头指针为0
}
// 销毁队列
void DestroyQueue(SqQueue sq)
{
}
// 进队运算算法
int EnQueue(SqQueue& sq, ElemType x)
{
if ((sq.rear + 1) % MaxSize == sq.front)
return 0;
sq.rear = (sq.rear + 1) % MaxSize; //队尾循环进1
sq.data[sq.rear] = x;
return 1;
}
//出队运算算法
int DeQueue(SqQueue& sq, ElemType &x)
{
if ((sq.rear == sq.front))
return 0;
sq.front = (sq.front + 1) % MaxSize; //对头循环进1
x = sq.data[sq.front]; //将值赋给x
return 1;
}
// 取队头元素
int GetHead(SqQueue sq, ElemType& x)
{
if ((sq.rear == sq.front))
return 0;
x = sq.data[sq.front + 1] % MaxSize;
return 1;
}
// 判断队空,空返回1,不空返回0
int QueueEmpty(SqQueue sq)
{
if ((sq.rear == sq.front))
return 1;
else
return 0;
}
//main()函数
void main()
{
SqQueue sq;
ElemType e;
printf("初始化队列\n");
InitQueue(sq);
printf("队%s\n", (QueueEmpty(sq) == 1 ? "空" : "不空"));
printf("a进队\n");
EnQueue(sq, 'a');
printf("b进队\n");
EnQueue(sq, 'b');
printf("c进队\n");
EnQueue(sq, 'c');
printf("d进队\n");
EnQueue(sq, 'd');
printf("队%s\n", (QueueEmpty(sq) == 1 ? "空" : "不空"));
GetHead(sq, e);
printf("队顶元素:%c\n", e);
printf("出队:");
while (!QueueEmpty(sq))
{
DeQueue(sq, e);
printf("%c", e);
}
printf("\n");
DestroyQueue(sq);
}
照着书上打的,算是记一下笔记。