用c语言建立一个顺序队列,通过键盘读取元素实现入队操作(从键盘接受元素个数n以及n个整型数),实现元素的出队操作,并打印输出元素,获取队首元素,判断队列是否为空,清空队列
时间: 2024-02-22 12:57:00 浏览: 64
好的,我能够帮你解决这个问题。下面是基于C语言的顺序队列实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
// 定义队列结构体
typedef struct {
int data[MAXSIZE];
int front;
int rear;
} Queue;
// 初始化队列
void InitQueue(Queue *Q) {
Q->front = Q->rear = 0;
}
// 判断队列是否为空
int IsEmpty(Queue Q) {
return Q.front == Q.rear;
}
// 入队操作
int EnQueue(Queue *Q, int x) {
if ((Q->rear + 1) % MAXSIZE == Q->front) {
return 0; // 队列已满,插入失败
}
Q->data[Q->rear] = x;
Q->rear = (Q->rear + 1) % MAXSIZE;
return 1; // 插入成功
}
// 出队操作
int DeQueue(Queue *Q, int *x) {
if (IsEmpty(*Q)) {
return 0; // 队列为空,删除失败
}
*x = Q->data[Q->front];
Q->front = (Q->front + 1) % MAXSIZE;
return 1; // 删除成功
}
// 获取队首元素
int GetFront(Queue Q, int *x) {
if (IsEmpty(Q)) {
return 0; // 队列为空
}
*x = Q.data[Q.front];
return 1;
}
// 清空队列
void ClearQueue(Queue *Q) {
Q->front = Q->rear = 0;
}
int main() {
Queue Q;
InitQueue(&Q);
int n, x;
printf("请输入元素个数n:");
scanf("%d", &n);
printf("请依次输入%d个元素:", n);
for (int i = 0; i < n; i++) {
scanf("%d", &x);
EnQueue(&Q, x);
}
printf("队列中的元素为:");
while (!IsEmpty(Q)) {
DeQueue(&Q, &x);
printf("%d ", x);
}
printf("\n");
if (GetFront(Q, &x)) {
printf("队首元素为:%d\n", x);
} else {
printf("队列为空\n");
}
ClearQueue(&Q);
return 0;
}
```
你可以通过键盘输入元素个数和元素值,然后实现元素的入队操作,最后实现元素的出队操作,并打印输出元素,获取队首元素,判断队列是否为空,清空队列。
阅读全文