C语言队列创建

时间:2025-03-14 08:19:57
#include<> #include<> 创建一个链表结构 typedef struct QueueNode { int data; struct QueueNode *next; }QueueNode,*Queuelink; 再创建一个队列结构 typedef struct Queue { Queuelink front, rear;//这里的首尾都是指针型的 }Queue; //初始化队列 void init(Queue *q) { //初始化为空并分配空间 q->front = q->rear = (Queuelink)malloc(sizeof(QueueNode)); if (!q->front) { exit(0); } //末尾指针指向空 q->front->next = NULL; } //入队操作,这里我们的队首节点并不存储值。 void insert(Queue *q, int e) { Queuelink p; p = (Queuelink)malloc(sizeof(QueueNode)); if (p == NULL) exit(0); p->data = e; //这部分和链表的尾插法一致 p->next = NULL; q->rear->next = p; q->rear = p; } //出队操作,其实就是单链表的操作 void out(Queue *q, int *e) { Queuelink p; if (q->front == q->rear) { return; } p = q->front->next; *e = p->data; q->front->next = p->next; if (q->rear == p) { q->rear = q->front; } free(p); } //判断是否为空 int isempty(Queue *q) { if (q->front == q->rear) return 1; else return 0; }