C语言实现模拟消息队列
时间: 2024-10-22 14:29:58 浏览: 19
C语言实现多级反馈队列调度算法
在C语言中,可以使用数组或链表来模拟一个基本的消息队列。这里我们以链表为例,因为链表支持动态添加元素,更适合处理不定量的消息。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义节点结构体
typedef struct Node {
char message[100]; // 消息内容
struct Node* next; // 下一个节点指针
} Node;
// 创建链表头结点
Node* create_queue() {
return (Node*)malloc(sizeof(Node));
}
// 添加消息到队列尾部
void enqueue(Node** head, const char* msg) {
Node* newNode = create_queue();
if (newNode == NULL) {
printf("Memory allocation failed.\n");
return;
}
strcpy(newNode->message, msg);
newNode->next = *head;
*head = newNode;
}
// 从队列头部获取并删除消息
char* dequeue(Node** head) {
if (*head == NULL) {
printf("Queue is empty.\n");
return NULL;
}
char* msg = (*head)->message;
Node* temp = *head;
*head = (*head)->next;
free(temp); // 释放旧节点内存
return msg;
}
// 示例使用
int main() {
Node* queue_head = create_queue();
enqueue(&queue_head, "Message 1");
enqueue(&queue_head, "Message 2");
while (queue_head != NULL) {
char* msg = dequeue(&queue_head);
printf("Received message: %s\n", msg);
}
return 0;
}
```
阅读全文