关于顺序队列的练习
//循环队列
typedef struct sqeQueue {
datatype Queue[maxsize];
int front;
int rear;
}seqCriQueue;
//队列初始化
void InitSeqCirQueue(SeqCirQueue* SCQ) {
SCQ->front = SCQ->rear=0;
}
//判断队列是否为空
int IsEmpty(SeqCirQueue* SCQ) {
if (SCQ->front == SCQ->rear)
return 1;
else
return 0;
}
//判断队列是否为满
int IsFull(SeqCirQueue* SCQ) {
if ((SCQ->rear + 1) % maxsize== SCQ->front)
return 1;
else
return 0;
}
//入队操作
int EnterSeqCirQueue(SeqCirQueue* SCQ, DataType data) {
if (IsFull(SCQ)) {
printf("队列已经满了");
return 0;
}
else {
SCQ->Queue[rear] = data;
SCQ->rear = (SCQ->rear + 1) % maxsize;
}
}
//出队操作
int DeleteSeqCirQueue(SeqCirQueue* SCQ, DataType* data) {
if(isEmpty)
{
printf("队列为空,无法取出");
return 0;
}
else {
*data = SCQ->Queue[SCQ->front];
SCQ->front = (SCQ->front + 1) % maxsize;
}
}
清空队列
void ClearSeqCirQueue(SeqCirQueue* SCQ) {
SCQ->front = SCQ->rear == 0;
}
//打印队列元素
void PrintSeqCirQueue(SeqCirQueue* SCQ) {
if (Isfull(SCQ))
{
printf("队列为满,无法打印");
}
else {
if (SCQ->front < SCQ->rear)
{
for (int i = SCQ->front; i < SCQ->rear; i++)
printf("%3d", SCQ->data[i]);
}
else if (SCQ->front > SCQ->rear) {
for (int i = SCQ->front; i < SCQ->rear + maxsize; i++)
printf("%3d", SCQ->data[i]);
}
printf("\n");
}
}