代码实现链式队列,输入数字入队,输入字符出队。
时间: 2024-01-15 15:45:30 浏览: 18
链式队列的实现需要定义一个链表节点结构体,包含一个数据域和一个指向下一个节点的指针域。同时,还需要定义一个队列结构体,包含头指针和尾指针。具体代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 链表节点
typedef struct Node {
int data;
struct Node *next;
} Node;
// 队列
typedef struct Queue {
Node *head;
Node *tail;
} Queue;
// 初始化队列
void init(Queue *q) {
q->head = q->tail = NULL;
}
// 入队
void enqueue(Queue *q, int data) {
Node *node = (Node*)malloc(sizeof(Node));
node->data = data;
node->next = NULL;
if (q->head == NULL) {
q->head = q->tail = node;
} else {
q->tail->next = node;
q->tail = node;
}
}
// 出队
int dequeue(Queue *q) {
if (q->head == NULL) {
return -1;
}
Node *node = q->head;
q->head = q->head->next;
int data = node->data;
free(node);
return data;
}
int main() {
Queue q;
init(&q);
while (1) {
char input[10];
scanf("%s", input);
if (strlen(input) == 1 && input[0] >= 'a' && input[0] <= 'z') {
int data = dequeue(&q);
if (data == -1) {
printf("Queue is empty!\n");
} else {
printf("%d\n", data);
}
} else {
int data = atoi(input);
enqueue(&q, data);
}
}
return 0;
}
```
在主函数中,我们不断读入用户输入的字符串,如果输入的是一个数字,就将其转换为整数并入队;如果输入的是一个小写字母,就从队列中取出一个元素并输出。如果队列为空,则输出错误信息。