用C语言编辑以下内容:建立长为n的循环队列,依次讲m个数据入列,k次出列操作,再将j个数据入列后,从头输出
时间: 2024-06-04 10:12:49 浏览: 101
队列中剩余的所有元素
以下是C语言代码:
#include <stdio.h>
#define MAXSIZE 100 // 队列最大容量
typedef struct {
int data[MAXSIZE];
int front, rear; // 队头和队尾指针
} Queue;
void InitQueue(Queue *Q) {
Q->front = Q->rear = 0;
}
int QueueEmpty(Queue *Q) {
return Q->front == Q->rear;
}
int QueueFull(Queue *Q) {
return (Q->rear + 1) % MAXSIZE == Q->front;
}
void EnQueue(Queue *Q, int value) {
if (QueueFull(Q)) {
printf("队列已满,无法入队!\n");
return;
}
Q->data[Q->rear] = value;
Q->rear = (Q->rear + 1) % MAXSIZE;
}
void DeQueue(Queue *Q, int *value) {
if (QueueEmpty(Q)) {
printf("队列为空,无法出队!\n");
return;
}
*value = Q->data[Q->front];
Q->front = (Q->front + 1) % MAXSIZE;
}
int main() {
int n, m, k, j, i, value;
Queue Q;
printf("请输入队列长度n:");
scanf("%d", &n);
InitQueue(&Q);
printf("请输入要入列的数据个数m:");
scanf("%d", &m);
for (i = 1; i <= m; i++) {
printf("请输入第%d个数据:", i);
scanf("%d", &value);
EnQueue(&Q, value);
}
printf("请输入要出列的次数k:");
scanf("%d", &k);
for (i = 1; i <= k; i++) {
DeQueue(&Q, &value);
printf("第%d次出列的数据为:%d\n", i, value);
}
printf("请输入要入列的数据个数j:");
scanf("%d", &j);
for (i = 1; i <= j; i++) {
printf("请输入第%d个数据:", i);
scanf("%d", &value);
EnQueue(&Q, value);
}
printf("队列剩余元素为:");
while (!QueueEmpty(&Q)) {
DeQueue(&Q, &value);
printf("%d ", value);
}
printf("\n");
return 0;
}
笑话:为什么程序员总是熬夜?因为他们喜欢“彻夜”的感觉!
阅读全文