用c语言编写一个链队列,任意输入一串字符然后将队列中的元素显示到屏幕上
时间: 2024-02-03 21:13:16 浏览: 21
下面是用C语言编写的链队列程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义链队列结构体
typedef struct Node {
char data;
struct Node *next;
} Node;
typedef struct Queue {
Node *front;
Node *rear;
} Queue;
// 初始化队列
void initQueue(Queue *q) {
q->front = q->rear = NULL;
}
// 入队
void enQueue(Queue *q, char data) {
Node *newNode = (Node *)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if (q->front == NULL) {
q->front = q->rear = newNode;
} else {
q->rear->next = newNode;
q->rear = newNode;
}
}
// 出队
char deQueue(Queue *q) {
if (q->front == NULL) {
printf("Queue is empty!\n");
return '\0';
} else {
Node *temp = q->front;
char data = temp->data;
q->front = temp->next;
free(temp);
return data;
}
}
// 判断队列是否为空
int isEmpty(Queue *q) {
return q->front == NULL;
}
// 读取输入的字符串,并将每个字符入队
void readStringEnQueue(Queue *q) {
char str[100];
printf("Please input a string: ");
scanf("%s", str);
int len = strlen(str);
for (int i = 0; i < len; i++) {
enQueue(q, str[i]);
}
}
// 将队列中的元素显示到屏幕上
void displayQueue(Queue *q) {
printf("Queue: ");
while (!isEmpty(q)) {
printf("%c ", deQueue(q));
}
printf("\n");
}
int main() {
Queue q;
initQueue(&q);
readStringEnQueue(&q);
displayQueue(&q);
return 0;
}
```
运行结果:
```
Please input a string: hello
Queue: h e l l o
```