当前位置: 首页 > news >正文

链队

#include <iostream>
using namespace std;typedef char ElemType;// 链队的节点结构
typedef struct QNode {ElemType data;       // 节点存储的元素struct QNode *next;  // 指向下一个节点的指针
} QNode;// 链队的结构体(包含队头、队尾指针)
typedef struct {QNode *front;  // 队头指针(指向队头节点)QNode *rear;   // 队尾指针(指向队尾节点)
} LinkQueue;
// (1)初始化链队
void InitQueue(LinkQueue &q) {q.front = q.rear = NULL;  // 队头、队尾指针初始化为空
}
// (2)判断链队是否非空
bool IsNotEmpty(LinkQueue q) {return q.front != NULL;  // 队头指针非空则队列非空
}
// (3)入队(元素e插入队尾)
bool EnQueue(LinkQueue &q, ElemType e) {// 创建新节点QNode *newNode = new QNode;if (newNode == NULL) {  // 内存分配失败cout << "内存不足,无法入队!" << endl;return false;}newNode->data = e;newNode->next = NULL;if (q.front == NULL) {  // 队列为空时,新节点既是队头也是队尾q.front = q.rear = newNode;} else {  // 队列非空时,新节点链接到队尾,更新队尾指针q.rear->next = newNode;q.rear = newNode;}return true;
}
// (4)出队(队头元素出队,存入e)
bool DeQueue(LinkQueue &q, ElemType &e) {if (q.front == NULL) {  // 队列为空cout << "队列为空,无法出队!" << endl;return false;}QNode *temp = q.front;  // 临时保存队头节点e = temp->data;         // 取出队头元素q.front = q.front->next; // 队头指针后移if (q.front == NULL) {  // 若出队后队列为空,队尾指针也置空q.rear = NULL;}delete temp;  // 释放原队头节点return true;
}
// (5)输出队列序列
void PrintQueue(LinkQueue q) {if (q.front == NULL) {cout << "队列为空!" << endl;return;}QNode *p = q.front;cout << "队列序列:";while (p != NULL) {  // 从队头遍历到队尾cout << p->data << " ";p = p->next;}cout << endl;
}
// (6)释放链队
void DestroyQueue(LinkQueue &q) {QNode *p = q.front;while (p != NULL) {  // 遍历所有节点,逐个释放QNode *temp = p;p = p->next;delete temp;}q.front = q.rear = NULL;  // 队头、队尾指针置空cout << "队列已释放!" << endl;
}
// exp3-4.cpp
int main() {LinkQueue q;ElemType e;// (1)初始化链队InitQueue(q);cout << "(1)链队初始化完成" << endl;// (2)判断链队是否非空if (IsNotEmpty(q)) {cout << "(2)当前队列是非空队列" << endl;} else {cout << "(2)当前队列是空队列" << endl;}// (3)依次入队元素a、b、cEnQueue(q, 'a');EnQueue(q, 'b');EnQueue(q, 'c');cout << "(3)元素a、b、c入队完成" << endl;PrintQueue(q);// (4)出队一个元素,输出该元素if (DeQueue(q, e)) {cout << "(4)出队的元素是:" << e << endl;}PrintQueue(q);// (5)依次入队元素d、e、fEnQueue(q, 'd');EnQueue(q, 'e');EnQueue(q, 'f');cout << "(5)元素d、e、f入队完成" << endl;PrintQueue(q);// (6)输出队列序列cout << "(6)";PrintQueue(q);// (7)释放队列DestroyQueue(q);return 0;
}

 

http://www.hskmm.com/?act=detail&tid=36583

相关文章:

  • Gitee本土化战略深度解析:中国开发者生态的合规与效率革命
  • 2025年10月上海装修公司口碑榜:十强对比评测
  • 02-GPIO-铁头山羊STM32标准库新版笔记
  • 【多校支持、EI检索】第六届大数据与社会科学国际学术会议(ICBDSS 2025)
  • IDC iPaaS市场报告解读:独立厂商与云巨头的“双轨竞速”
  • 2025年10月仓储管理系统推荐:鸿链云仓领衔五大方案对比评测榜
  • 2025年10月电动叉车销售公司排行榜:五家主流服务商对比评测
  • 2025年口罩机厂家权威推荐榜:全自动口罩机器,全自动KN95口罩机源头企业综合评测与采购指南
  • 2025年包装机厂家权威推荐榜单:全自动包装机/包装生产线/非标定制机器与生产线专业选购指南
  • Timing Signoff 技术精要
  • Oracle故障处理:10G RAC srvctl注册实例正常,但是crs切不能管理实例
  • 杂题选做-2
  • 读书笔记:白话解读Oracle范围分区
  • 2025年10月人形机器人场景落地商评测榜:赛飞特工程技术集团数据透视
  • 科林电气与利驰软件续签合作,共启数字化协同新篇章!
  • 详细介绍:资产信息收集与指纹识别:HTTPX联动工具实战指南
  • 易基因:剑桥大学团队利用微量WGBS等揭示DNMT3L在胎盘发育中的DNA甲基化调控机制:CSC(IF20.5)
  • 10.22
  • 和橘子学AI创作【500集120实战】
  • iOS 26 性能调试工具全景指南 多工具组合 + 实战流程
  • 102302134陈蔡裔数据采集第一次作业
  • 2025年10月蒸汽发生器品牌榜:辰能能源领衔五强对比
  • 2025吹塑机厂家权威推荐:鼎浩包装科技实力企业,专业定制高效生产方案
  • 2025年10月蒸汽发生器品牌评测榜:节能与合规全解析
  • 活动邀请丨2025 全球机器学习技术大会
  • 2025年10月低空经济核心公司对比评测榜:五强排名与全维度数据解析
  • 01-准备-铁头山羊STM32标准库新版笔记
  • platformio上ESP32-s3,N16R8选择板子的解决方案
  • 6. Z 字形变换
  • 2025年10月素材平台推荐榜:高品图像领衔五强对比