队列
#include <stdio.h> #include <stdlib.h> // 队列结点的定义 typedef struct QNode { int data; struct QNode* next; } QNode; // 链式队列的定义 typedef struct { QNode* front; // 队头指针 QNode* rear; // 队尾指针 } LinkedQueue; // 初始化链式队列 void InitQueue(LinkedQueue* queue) { queue->front = queue->rear = NULL; } // 入队 void Enqueue(LinkedQueue* queue, int data) { QNode* newNode = (QNode*)malloc(sizeof(QNode)); if (newNode == NULL) { printf("内存分配失败\n"); exit(EXIT_FAILURE); } newNode->data = data; newNode->next = NULL; if (queue->rear == NULL) { // 空队列,插入第一个元素 queue->front = queue->rear = newNode; } else { // 队尾插入新结点 queue->rear->next = newNode; queue->rear = newNode; } } // 出队 int Dequeue(LinkedQueue& Q) { if (Q.front == NULL) { printf("队列为空,无法出队\n"); exit(EXIT_FAILURE); } QNode* p = Q.front; int data = p->data; Q.front = p->next; free(p); // 如果出队后队列为空,更新队尾指针 if (Q.front == NULL) { Q.rear = NULL; } return data; } int main() { LinkedQueue queue; InitQueue(&queue); // 入队操作 Enqueue(&queue, 1); Enqueue(&queue, 2); Enqueue(&queue, 3); // 出队操作 int data = Dequeue(queue); printf("出队元素:%d\n", data); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?