写一个c语言程序,设计包含一个队头指针和一个计数指针的循环队列的基本运算程序,并用相关数据进行测试。
时间: 2023-04-11 12:01:41 浏览: 57
好的,以下是一个基本的循环队列的C语言程序,包含队头指针和计数指针的基本运算程序:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 5
typedef struct {
int data[MAX_SIZE];
int front;
int rear;
int count;
} Queue;
void initQueue(Queue *q) {
q->front = 0;
q->rear = 0;
q->count = 0;
}
int isFull(Queue *q) {
return q->count == MAX_SIZE;
}
int isEmpty(Queue *q) {
return q->count == 0;
}
void enqueue(Queue *q, int value) {
if (isFull(q)) {
printf("Queue is full!\n");
return;
}
q->data[q->rear] = value;
q->rear = (q->rear + 1) % MAX_SIZE;
q->count++;
}
int dequeue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty!\n");
return -1;
}
int value = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
q->count--;
return value;
}
void printQueue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty!\n");
return;
}
printf("Queue: ");
int i;
for (i = 0; i < q->count; i++) {
printf("%d ", q->data[(q->front + i) % MAX_SIZE]);
}
printf("\n");
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printQueue(&q);
dequeue(&q);
printQueue(&q);
enqueue(&q, 4);
enqueue(&q, 5);
enqueue(&q, 6);
printQueue(&q);
return 0;
}
这个程序可以创建一个循环队列,包含队头指针和计数指针,可以进行入队、出队、判断队列是否为空或已满等基本运算。您可以使用相关数据进行测试,例如:
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printQueue(&q);
dequeue(&q);
printQueue(&q);
enqueue(&q, 4);
enqueue(&q, 5);
enqueue(&q, 6);
printQueue(&q);
这将创建一个队列,将1、2、3入队,然后出队一个元素,再将4、5、6入队,最后打印队列。