c语言代码实现链式队列,输入数字入队,输入字符出队
时间: 2023-06-20 19:10:33 浏览: 217
以下是使用C语言实现链式队列,输入数字入队,输入字符出队的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
typedef struct Queue {
Node *front;
Node *rear;
} Queue;
void init(Queue *q) {
q->front = q->rear = NULL;
}
int empty(Queue *q) {
return q->front == NULL;
}
void enqueue(Queue *q, int data) {
Node *new_node = (Node *)malloc(sizeof(Node));
new_node->data = data;
new_node->next = NULL;
if (q->rear == NULL) {
q->front = q->rear = new_node;
} else {
q->rear->next = new_node;
q->rear = new_node;
}
}
int dequeue(Queue *q) {
if (empty(q)) {
printf("Queue is empty!\n");
return -1;
}
int data = q->front->data;
Node *temp = q->front;
q->front = q->front->next;
if (q->front == NULL) {
q->rear = NULL;
}
free(temp);
return data;
}
int main() {
Queue q;
init(&q);
char input[10];
while (1) {
printf("Enter a number to enqueue or a character to dequeue: ");
scanf("%s", input);
if (isdigit(input[0])) {
int num = atoi(input);
enqueue(&q, num);
} else {
int data = dequeue(&q);
if (data != -1) {
printf("Dequeued item: %d\n", data);
}
}
}
return 0;
}
```
在这个示例中,我们使用结构体实现了一个链式队列。其中,队列的每个节点包含一个整数类型的数据和一个指向下一个节点的指针。队列结构体包含指向队列头和尾节点的指针。我们使用init()函数初始化队列,使用empty()函数检查队列是否为空,使用enqueue()函数将一个整数入队,使用dequeue()函数将队列中的第一个整数出队,并返回它的值。
在main()函数中,我们使用一个无限循环,让用户输入数字或字符。如果输入的是数字,我们将其转换为整数并使用enqueue()函数将其入队。如果输入的是字符,我们使用dequeue()函数将队列头的整数出队,并打印出它的值。如果队列为空,则打印出“Queue is empty!”的提示信息。
阅读全文