#include <stdio.h> #include <stdlib.h> // 包含了 malloc 和 exit 函数 #include <stdbool.h> // 包含 bool 类型 #define MAX_QSIZE 11 // 最大长度+1,当队列只剩一个空单元时为满 typedef struct queue { char *data; // 初始化时分配数组空间 int front; // 队头 int rear; // 队尾 int length; } Queue; void initQueue(Queue *Q) { // 队列的初始化 char *p = (char *)malloc(sizeof(char) * MAX_QSIZE);//建立顺序队列 if (NULL == p) { printf("动态内存分配失败!\n"); exit(-1); } else { Q->data = p; Q->front =0; Q->rear = 0; Q->length=0; } } bool isFull(Queue *Q) { // 判断队列是否已满 if ((Q->rear + 1) % MAX_QSIZE == Q->front ) return true; else return false; } void enQueue(Queue *Q, char value) { // 入队 //写出入队函数 } void traverseQueue(Queue *Q) { // 遍历队列 //写出遍历队列并打印元素的函数 } bool isEmpty(Queue *Q) { // 判断队列是否为空 if (Q->length==0) { return true; } else { return false; } } bool outQueue(Queue *Q, char *value) { // 出队 //写出出队函数 } int main() { system("cls"); Queue Q; char ch='a'; initQueue(&Q); for(int i=1;i<=10;i++){ enQueue(&Q,ch); if(Q.length < MAX_QSIZE) printf("元素 %c 入队\n",ch); ch++; } printf("\n遍历队列:\n"); traverseQueue(&Q); printf("\n"); printf("出队 5 个元素\n"); char value; for(int i=1;i<=5;i++) { if (outQueue(&Q, &value)) printf(" %c 出队成功\n", value); else { printf("出队失败"); break; } } printf("\n遍历队列:\n"); traverseQueue(&Q); printf("\n"); printf("再入队 4 个元素\n"); ch='r'; for(int i=1;i<=4;i++){ enQueue(&Q, ch); if(Q.length < MAX_QSIZE) printf("元素 %c 入队\n",ch); ch++; } printf("\n遍历队列:\n"); traverseQueue(&Q); printf("\n"); return 0; }进行完善
时间: 2023-12-03 07:41:57 浏览: 83
好的,我来帮你完善代码。
入队函数:
```
void enQueue(Queue *Q, char value) {
if (isFull(Q)) {
printf("队列已满,无法入队!\n");
} else {
Q->data[Q->rear] = value;
Q->rear = (Q->rear + 1) % MAX_QSIZE;
Q->length++;
}
}
```
出队函数:
```
bool outQueue(Queue *Q, char *value) {
if (isEmpty(Q)) {
printf("队列为空,无法出队!\n");
return false;
} else {
*value = Q->data[Q->front];
Q->front = (Q->front + 1) % MAX_QSIZE;
Q->length--;
return true;
}
}
```
遍历队列函数:
```
void traverseQueue(Queue *Q) {
int i = Q->front;
printf("队列元素:");
while (i != Q->rear) {
printf("%c ", Q->data[i]);
i = (i + 1) % MAX_QSIZE;
}
printf("\n");
}
```
这样,你的代码就完整了。希望对你有帮助!
阅读全文