2021-04-23

链式队列最全源码(包括定义链式队列的结点、定义链式队列结构体、入队、出队等等):

如果有错误的地方,希望大佬们批评指正(卑微)!

#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;
}

我会一直保持更新的哦!

如果对大家有所帮助,希望大家点赞、评论、收藏、转发,这将是我努力的动力!

上一篇:C语言实现数据结构——链队列


下一篇:数据结构review——队列