链式队列最全源码(包括定义链式队列的结点、定义链式队列结构体、入队、出队等等):
如果有错误的地方,希望大佬们批评指正(卑微)!
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef int QueueData;
typedef struct node { //定义链式队列的结点
QueueData data;
struct node* link;
}QueueNode;
typedef struct { //定义链式队列结构体
QueueNode* rear, * front;
}LinkQueue;
void InitQueue(LinkQueue* q) { //初始化链队列
q->rear = q->front = (QueueNode*)malloc(sizeof(QueueNode));
if (!q->front) exit;
q->front->link = NULL;
}
int GetFront(LinkQueue* q, QueueData* x) { //取队头元素,默认front木有数据
if (q->front == q->rear) exit;
else (*x) = q->front->link->data;
return 1;
}
int EnQueue(LinkQueue* q, QueueData x) { //入队
QueueNode* p = (QueueNode*)malloc(sizeof(QueueNode));
p->data = x;
p->link = NULL;
q->rear->link = p;
q->rear = p;
return 1;
}
int DeQueue(LinkQueue* q, QueueData* x) { //出队
if (q->front == q->rear) return 0;
QueueNode* p = q->front->link;
(*x) = p->data; //保存队头值
q->front->link = p->link; //新队头
if (q->rear = p->link) q->front = q->rear;
free(p);
return 1;
}
我会一直保持更新的哦!
如果对大家有所帮助,希望大家点赞、评论、收藏、转发,这将是我努力的动力!