带头结点的链队操作集(C语言版)
/*带头结点的链队的操作集中包含的操作1、初始化链队 QStatus InitQueue_LQ(LQueue Q, int size);2、销毁链队 QStatus DestroyQueue_LQ(LQueue Q);3、判断链队 Q 是否为空Status QueueEmpty_LQ(LQueue Q);4、清空链队 QStatus ClearQueue_LQ(LQueue Q);5、入队操作Status EnQueue_LQ(LQueue Q, ElemType e);6、出队操作Status DeQueue_LQ(LQueue Q, ElemType e);7、读取队头元素并用 e 返回Status GetHead_LQ(LQueue Q, ElemType e);*/#includestdio.h#includestdlib.h#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -1#define PERROR -2typedef int Status;// 数据元素的类型使用时需根据问题的需求定义。typedef int ElemType;// 结点类型定义typedef struct LQNode{ElemType data; // 数据域struct LQNode *next; // 指针域}LQNode, *LQNodePtr; // 结点及指针类型// 链队结构类型定义typedef struct{LQNodePtr front; // 队头指针LQNodePtr rear; // 队尾指针}LQueue; // 链队类型// 1、链队初始化Status InitQueue_LQ(LQueue Q){Q.front (LQNode *)malloc(sizeof(LQNode)); // 申请头结点存储空间if (Q.front NULL) return OVERFLOW; // 内存分配失败Q.rear Q.front;Q.front-next NULL; // 将头结点指针域置为 NULLreturn OK;}// 2、销毁链队Status DestroyQueue_LQ(LQueue Q){if(Q.frontNULL)return PERROR; // 参数合法性检验参数非法或已销毁返回不再执行销毁操作//从头结点开始依次队每一个结点释放内存,这里Q.rear辅助向后传递的一个临时指针使用while (Q.front!NULL){Q.rear Q.front-next;free(Q.front);Q.front Q.rear;}Q.front NULL; // 避免指针悬挂Q.rear NULL; // 避免指针悬挂return OK;}// 3、判断链队 Q 是否为空Status QueueEmpty_LQ(LQueue Q){if(Q.front NULL)return PERROR; // 参数合法性检验if(Q.front Q.rear){return TRUE;}else{return FALSE;}}// 4、清空链队QStatus ClearQueue_LQ(LQueue Q){if(Q.front NULL) return PERROR; // 参数合法性检验while (Q.front-next!NULL){Q.rear Q.front-next;Q.front-next Q. rear-next;free(Q.rear);}Q.rear Q.front; // 避免指针悬挂return OK;}// 5、入队操作EnQueue_LQ(LQueue Q, ElemType e){if(Q.frontNULL)return PERROR; // 参数合法性检验非法返回参数错误LQNodePtr p;p (LQNode *)malloc(sizeof(LQNode));if(p NULL) return OVERFLOW; // 内存分配失败p-data e;p-next NULL;if(Q.front NULL){ // 如果队空Q.front-next p;}else{Q.rear-next p; // 如果队非空在队尾添加}Q.rear p;return OK;}// 6、出队操作Status DeQueue_LQ(LQueue Q, ElemType e){if(Q.frontNULL)return PERROR; // 参数合法性检验非法返回参数错误LQNodePtr p;if(Q.rear Q.front)return ERROR; // 如果队空返回不执行操作p Q.front-next;e p-data;Q.front-next p-next;if(Q.front-next NULL){Q.rear Q.front; // 如果删除后队空移动队尾指针到头结点}free(p);return OK;}// 7、读取队头元素并用 e 返回Status GetHead_LQ(LQueue Q, ElemType e){if(Q.frontNULL)return PERROR; // 参数合法性检验非法返回参数错误if(Q.front Q.rear)return ERROR; // 如果是空队无法读取返回错误LQNodePtr p Q.front-next;e p-data; // 队头元素交给 ereturn OK;}int main(){int i, e, state;LQueue Q;printf(1.初始化队列\n);printf(2.销毁队列\n);printf(3.判断队列是否为空\n);printf(4.清空队列\n);printf(5.将元素入队\n);printf(6.队头元素出队\n);printf(7.取队头元素并返回\n);do{printf(请输入你要进行的操作\n);scanf(%d,i);switch(i){case 1 :state InitQueue_LQ(Q);if(state OK){printf(队列初始化成功。\n);}else{printf(队列初始化失败\n);}break;case 2 :state DestroyQueue_LQ(Q);if(state PERROR){printf(请确认参数合法化或者先执行队列的初始化操作\n);}else{printf(队列销毁成功。\n);}break;case 3 :state QueueEmpty_LQ(Q);if(state PERROR){printf(请确认参数合法化或者先执行队列的初始化操作\n);}else if(state TRUE){printf(队列为空\n);}else if(state FALSE){printf(队列不为空!\n);}break;case 4 :state ClearQueue_LQ(Q);if(state PERROR){printf(请确认参数合法化或者先执行队列的初始化操作\n);}else{printf(已为您清空队列。\n);}break;case 5 :printf(请输入将要入队的元素的值\n);scanf(%d,e);state EnQueue_LQ(Q,e);if(state PERROR){printf(请确认参数合法化或者先执行队列的初始化操作\n);}else if(state OK){printf(元素 %d 成功入队。\n,e);}else{printf(元素 %d 入队失败\n,e);}break;case 6 :state DeQueue_LQ(Q, e);if(state PERROR){printf(请确认参数合法化或者先执行队列的初始化操作\n);}else if(state OK){printf(元素 %d 成功出队\n,e);}else{printf(队列内没有元素不能执行出队操作\n);}break;case 7 :state GetHead_LQ(Q,e);if(state PERROR){printf(请确认参数合法化或者先执行队列的初始化操作\n);}else if(state OK){printf(取出队头元素的值为%d\n,e);}else{printf(队列内没有元素不能执行读取队头元素操作\n);}break;}}while(i1i7);return 0;}

相关新闻

pve(‌Proxmox Virtual Environment)-CT容器挂载pve共享目录

pve(‌Proxmox Virtual Environment)-CT容器挂载pve共享目录

文章目录 前言 一、有特权容器挂载目录 1.通过SMB挂载 1.1 在PVE的web界面,选择容器,在选项-功能中勾选SMB/CIFS 1.2 在容器中安装smb客户端 1.3 测试与smb服务器的连接 1.4 容器中创建挂载点 1.5 将SMB服务器上的共享目录挂载到lxc容器内 1.6 自动挂载 2.将宿主机共享目录映…

2026/9/30 1:43:22 阅读更多 →
CSS border-image实现圆角渐变边框的工程化方案

CSS border-image实现圆角渐变边框的工程化方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 1:43:21 阅读更多 →
OpenViking 狼人杀 Demo 实战指南:多 Agent 对局一键启动,支持真人混局

OpenViking 狼人杀 Demo 实战指南:多 Agent 对局一键启动,支持真人混局

OpenViking 狼人杀 Demo 实战指南:多 Agent 对局一键启动,支持真人混局 【免费下载链接】OpenViking Self-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills. 项目地址: https://gitcode.com/GitHub_Trending/…

2026/9/30 1:43:21 阅读更多 →

最新新闻

GLM-5.3-Flash 本地部署与推理参数完全指南:320B-A18B 原生多模态架构解析与实战配置

GLM-5.3-Flash 本地部署与推理参数完全指南:320B-A18B 原生多模态架构解析与实战配置

大模型基础模型多模态本地部署 【免费下载链接】GLM-5.3-Flash GLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2 项目地址: https://ai.gitcode.com/zai-org/GLM-5.3-Flash 点击查看 免费下载 本篇…

2026/9/30 2:29:50 阅读更多 →
基于模糊自适应PID、传统PID实现热电炉温度控制设计仿真(带配套说明文档)

基于模糊自适应PID、传统PID实现热电炉温度控制设计仿真(带配套说明文档)

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。🍎 往期回顾关注个人主页:完整代码获取 定制创新 论文复现私信🍊个人信条:做科研&#xff0c…

2026/9/30 2:29:50 阅读更多 →
audio.cpp源码结构导读:framework、runtime与模型注册表的架构全景解析

audio.cpp源码结构导读:framework、runtime与模型注册表的架构全景解析

audio.cpp源码结构导读:framework、runtime与模型注册表的架构全景解析 【免费下载链接】audio.cpp An all-in-one, pure C inference engine for audio models, powered by ggml. Supports TTS, STT, VAD, voice conversion, music generation, and more, with hig…

2026/9/30 2:29:49 阅读更多 →
DevTools 深度调试:Network、断点、性能与缓存排查实战

DevTools 深度调试:Network、断点、性能与缓存排查实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 2:29:49 阅读更多 →
第十六届智能车竞赛竞速组成绩、奖项与技术点全解析

第十六届智能车竞赛竞速组成绩、奖项与技术点全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 2:29:49 阅读更多 →
LlamaIndex 系列【41】数据连接器:LlamaParse、LiteParse

LlamaIndex 系列【41】数据连接器:LlamaParse、LiteParse

文章目录1. 数据连接器1.1 概述1.2 集成包1.3 使用方式1.4 部分模块1.5 模块指南2. LlamaParse2.1 一分钟获取解析结果2.2 可用文档 API2.2.1 Parse2.2.2 Extract2.2.3 Index2.2.4 Classify2.2.5 Split2.3 代码示例3. LiteParse3.1 能力清单3.2 快速开始1. 数据连接器 1.1 概述…

2026/9/30 2:28:49 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →