- 33
- 0
- 约 6页
- 2017-03-05 发布于重庆
- 举报
Linux高级环境编程实验报告3
作 业 报 告
学生姓名: 学 号: 指导教师:
学生E-mail:
一、作业名称: 自定义消息队列
二、作业要求
自行设计一个消息队列(不能依赖已有库的队列),实现一般队列的操作:入列、出列以及队列判空,另外要保证线程安全,并且能够接收CLMessage类继承体系的消息;需要提供发送消息的通信类,以及循环消息的管理类,保证能够支持线程之间的通信。
三、设计与实现
根据要求分析,首先不能依赖已有库的队列,我们可以利用单链表来创建一个队列,对于消息的出队与入队操作,需要设定两个指针,头指针和尾指针,分别指向队头和队尾,根据队列的要求,队头处只能读(出队),队尾只能写(入队)。对于判空操作,设定队头指针等于队尾指针时为空。
代码清单3.1 自定义队列的实现
struct CLNode //链表节点
{
T data;
struct CLNode *next;
};
template class T
class CLMyQueue
{
private:
struct CLNodeT *QueueHead;//队头指针
struct CLNodeT *QueueTail;//队尾指针
public:
CLMyQueue();
~CLMyQueue();
void Push(T data); //数据入队操作
T Pop(); //数据出队操作
bool IsEmpty();//不能从空队列读数据,因此需进行队列判空
};
template class T
CLMyQueueT::CLMyQueue() //构造函数中对队列进行初始化操作,队头、队尾置空
{
QueueHead = NULL;
QueueTail = NULL;
}
template class T
CLMyQueueT::~CLMyQueue() //析构函数清空队列中的所有数据
{
while (QueueHead != NULL) //队头不为空,则清除队头,继续找队头的后继结点,删除所有的结点数据
{
struct CLNodeT *t = QueueHead;
QueueHead = QueueHead-next;
delete t;
}
}
template class T
void CLMyQueueT::Push(T data)//数据入队操作
{
if (IsEmpty())//如果队列为空,将数据入队,并且队头和队尾指针都指向该数据
{
QueueHead = new struct CLNodeT;
QueueHead-data = data;
QueueTail = QueueHead;
return;
}
//在队尾插入数据
struct CLNodeT *newNode = new struct CLNodeT;
newNode-data = data;
newNode-next = NULL;
QueueTail-next = newNode;
QueueTail = newNode;
}
template class T
T CLMyQueueT::Pop() //数据出队操作
{
if (IsEmpty())//不能从空队列中读数据,因此判定队列是否为空,空则返回空指针
{
return NULL;
}
T data = QueueHead-data;//取出对头数据,并修改队头指针
struct CLNodeT *t = QueueHead;
QueueHead = QueueHead-next;
delete t;
return data;
}
template class T
bool CLMyQueueT::IsEmpty()//判断队列是否为空
{
if (QueueHead == NULL) //当队头指针为空时,队列为空
{
return true;
}
return false;
}
代码清单3.1给出了自定义消息队列的实现。开始定义了单链表结点的结构。在自定义队列类CLMyQueue中给出了入队和出队的操作,分别是Push和Pop函数,当然,要注意一些细节,在出队时要判断队列是否为空,若为空则无法进
您可能关注的文档
最近下载
- 沈阳铁路局员工合同协议.docx VIP
- 2025年心理咨询师考试题库500道附参考答案【实用】.docx VIP
- 鱼骨图分析法(鱼骨图模板).doc VIP
- 2025年部编版三年级上册语文期末冲刺模拟卷三.docx VIP
- KISSsoft软件教程-Tutorial-016-包络面蜗轮蜗杆的验证.pdf VIP
- 《成人甲状腺功能减退症基层诊疗指南(2025版)》.docx VIP
- 三年级数学特训卷.docx VIP
- 搏击操教案15-16(1)完整版.doc VIP
- 2026年内分泌科糖尿病精细化管理实施方案.docx
- (2026春新版)人教版三年级数学下册《一 生活中的运动现象》PPT课件.pptx
原创力文档

文档评论(0)