2022年Linux高级环境编程实验报告 2.pdf
《2022年Linux高级环境编程实验报告 2.pdf》由会员分享,可在线阅读,更多相关《2022年Linux高级环境编程实验报告 2.pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、作业报告学生姓名:学 号:指导教师:学生 E-mail:一、作业名称:自定义消息队列二、作业要求自行设计一个消息队列(不能依赖已有库的队列),实现一般队列的操作:入列、出列以及队列判空,另外要保证线程安全,并且能够接收CLMessage类继承体系的消息; 需要提供发送消息的通信类, 以及循环消息的管理类, 保证能够支持线程之间的通信。三、设计与实现根据要求分析, 首先不能依赖已有库的队列, 我们可以利用单链表来创建一个队列,对于消息的出队与入队操作,需要设定两个指针,头指针和尾指针,分别指向队头和队尾,根据队列的要求,队头处只能读(出队),队尾只能写(入队) 。对于判空操作,设定队头指针等于队
2、尾指针时为空。代码清单3.1 自定义队列的实现struct CLNode /链表节点 T data; struct CLNode *next; ; template class CLMyQueue private: struct CLNode *QueueHead;/队头指针struct CLNode *QueueTail;/队尾指针名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - public: CLMyQueue(); CLM
3、yQueue(); void Push(T data); /数据入队操作T Pop(); /数据出队操作bool IsEmpty();/不能从空队列读数据,因此需进行队列判空; template CLMyQueue:CLMyQueue() /构造函数中对队列进行初始化操作, 队头、队尾置空 QueueHead = NULL; QueueTail = NULL; template CLMyQueue:CLMyQueue() /析构函数清空队列中的所有数据 while (QueueHead != NULL) /队头不为空,则清除队头,继续找队头的后继结点,删除所有的结点数据 struct CLNo
4、de *t = QueueHead; QueueHead = QueueHead-next; delete t; template void CLMyQueue:Push(T data)/数据入队操作 if (IsEmpty()/ 如果队列为空,将数据入队,并且队头和队尾指针都指向该数据 QueueHead = new struct CLNode; QueueHead-data = data; QueueTail = QueueHead; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
5、第 2 页,共 6 页 - - - - - - - - - return; /在队尾插入数据struct CLNode *newNode = new struct CLNode; newNode-data = data; newNode-next = NULL; QueueTail-next = newNode; QueueTail = newNode; template T CLMyQueue:Pop() / 数据出队操作 if (IsEmpty()/ 不能从空队列中读数据,因此判定队列是否为空,空则返回空指针 return NULL; T data = QueueHead-data;/ 取
6、出对头数据,并修改队头指针struct CLNode *t = QueueHead; QueueHead = QueueHead-next; delete t; return data; template bool CLMyQueue:IsEmpty()/ 判断队列是否为空 if (QueueHead = NULL) / 当队头指针为空时,队列为空 return true; return false; 代码清单 3.1给出了自定义消息队列的实现。 开始定义了单链表结点的结构。在自定义队列类CLMyQueue 中给出了入队和出队的操作,分别是Push 和 Pop名师资料总结 - - -精品资料欢
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年Linux高级环境编程实验报告 2022 Linux 高级 环境 编程 实验 报告
限制150内