Ai
1 Star 1 Fork 0

Qzx/data-structure-course

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
LinkQueue.h 1.93 KB
一键复制 编辑 原始数据 按行查看 历史
QZX 提交于 2023-03-19 14:15 +08:00 . 添加项目文件。
/**************
链式队列类,提供基本操作接口。
默认存储类型为 int
language: C.
****************/
#pragma once
#include <stdlib.h>
#define true 1
#define false 0
#ifndef ElemType
#define ElemType int
#endif // !ElemType
/*********************************************/
// 队列结点类
typedef struct QueNode {
ElemType data;
struct QueNode* next;
} QueNode;
// 初始化
void InitQueNode(QueNode* pn, ElemType data, QueNode* next) {
pn->data = data;
pn->next = next;
}
// 在结点 pa后插入 px
void InsertAsNext(QueNode* pa, QueNode* px) {
px->next = pa->next;
pa->next = px;
}
// 消除下一个结点,成功返回 1,不成功返回 0
int EraseNext(QueNode* pn) {
if (pn->next == NULL) return false;
QueNode* oldNode = pn->next;
pn->next = oldNode->next;
free(oldNode);
return true;
}
/***********************************************/
// 链式队列类
typedef struct QueueBody {
int size;
QueNode* front;
QueNode* back;
} QueueBody, * Queue;
// 只读操作接口
int GetSizeQue(Queue const que) { return que->size; }
ElemType GetBack(Queue const que) { return que->back->next->data; }
int IsEmptyQue(Queue const que) { return que->size == 0; }
ElemType GetFront(Queue const que) { return que->front->data; }
// 可写操作接口
void InitQue(Queue* que);
int PopQue(Queue que);
int PushQue(Queue que, ElemType data);
/******** 实现 **************/
// 初始化队列
void InitQue(Queue* que) {
(*que) = (Queue)malloc(sizeof(QueueBody));
(*que)->size = 0;
(*que)->front = (QueNode*)malloc(sizeof(QueNode));
(*que)->front->next = NULL;
(*que)->back = (*que)->front;
}
// 出队 释放队尾结点
inline int PopQue(Queue que) {
if (que->size == 0) return false;
EraseNext(que->back);
que->size--;
if (que->size == 0) que->front == que->back;
return true;
}
// 入队
inline int PushQue(Queue que, ElemType data) {
QueNode* newNode = (QueNode*)malloc(sizeof(QueNode));
newNode->data = data;
InsertAsNext(que->front, newNode);
que->front = newNode;
que->size++;
return true;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/Qzx3337/data-structure-course.git
git@gitee.com:Qzx3337/data-structure-course.git
Qzx3337
data-structure-course
data-structure-course
master

搜索帮助