- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
实验五结构和类
实验目的
学习结构的定义和使用
学习使用结构构建链表式数据结构
理解结构与指针的关系
学习类的定义、实例化的方法
学习使用构造函数和析构函数
学习类成员访问控制的运用
学习使用静态成员、内联成员函数
学习堆对象的分配、使用与释放
体会面向对象程序设计方法
实验内容
用结构构建链表
设计一个单向链表。从标准输入读取若干整数,建立链表,每次读入的数放入链表结尾。当用户输入0时,结束链表的建立工作。然后从前往后依次输出链表节点中的内容。每个节点包含两个值,一个是真正存放的整数值,另一个为指向链表中下一个节点的指针。链表中最后一个节点不指向任何节点,所以指针为空
(NULL)。表头指针和表尾指针分别指向链表的头节点和尾节点。
[测试数据]
程序输出:Pleaseinputintegerstobuildthelink(0TOEND):
用户输入:34567890
程序输出:Linkelements:3456789[实现要求]
用链表存放输入的整数。链表节点空间动态申请。链表节点结构和链表数据类型的参考定义为:
//定义链表节点类型typedefstructnode{
intelem;
structnode*next;
}Node;
//定义链表类型typedefNode*Link;
在链表建立结束后,输出链表节点内容的同时释放节点空间。
处理申请不到空间的情况。
[实现提示]
因为每次插入节点是在链表尾,而输出链表是从链表头,所以可以用两个指针记录链表。一个为头指针,一个为尾指针。
第一次插入节点时需要考虑链表为空的情况。
建立一个新节点的过程为://建立一个新的节点Node*pNode=newNode;
if(pNode==NULL){
coutMemoryinsufficient!;break;
}
pNode-elem=k;pNode-next=NULL;
顺序遍历链表的过程为:Node*pNode=head;while(pNode!=NULL){
访问pNode所指节点的内容;pNode=pNode-Next;
}
将新节点加到链表中的过程为:
if(head==NULL)head=tail=pNode;else{
tail-next=pNode;tail=pNode;
}
pNode-elem=k;pNode-next=NULL;
顺序遍历链表的过程为:Node*pNode=head;while(pNode!=NULL){
访问pNode所指节点的内容;pNode=pNode-Next;
}
将新节点加到链表中的过程为:
if(head==NULL)head=tail=pNode;else{
tail-next=pNode;tail=pNode;
}
[思考问题]
如果是双向链表,程序要做那些改动?
队列类
设计一个队列类,模拟实际生活的队列,队列中的元素服从先进先出的规则。每次有新的元素入列时,就放在队列尾。元素出列时,从队列头出。开始时队列为空。队列的示意图为:
[实现要求]
利用上一实验设计的链表结构存放队列类中的队列元素。也即队列元素的空间是动态申请的。
在构造队列对象时,初始化该链表,在析构队列对象时,释放链表所占的空间。
队列类用单独的文件”queue.cpp”实现,队列类的定义放在一个头文件”queue.h”中,主文件名为main.cpp。
队列类中的元素为整数,并提供以下服务:
voidput(intnewVal);//在队尾加入一个新元素intget();//取出队头元素,并释放节点空间intgetCount();//取队列中元素的个数
boolempty();//判断队列是否为空
bool是VisualC++定义的数据类型,它其实是一种整数类型。具有bool类型的变量只有两种值:true或false。一个条件表达式返回的值就是bool类型的。如表达式i!=0在i的值为0时返回false,在不为0时返回true。
要求将函数empty()和getCount()定义为内联函数,另外两个定义为非内联函数。数据成员全定义为私有成员或保护成员。
使用队列类的主程序为:#includeiostream.h#includequeue.h
intmain(){Queueq;
inti;
//输出队列是否为空
coutQueueempty:;if(q.empty())
cout
您可能关注的文档
- compound合成词分析和总结.docx
- const用法大全分析和总结.docx
- Conversation Eersicecar rental分析和总结分析和总结.docx
- Cookie、 Session和 Cache分析和总结.docx
- cookie练习分析和总结.docx
- COP138 SF6泄露在线监测报警系统.docx
- CoreJava笔记分析和总结.docx
- CorelDRAW安装方法分析和总结.docx
- Corporate social responsibility分析和总结分析和总结.docx
- Corrosion of Embedded Metals分析和总结分析和总结.docx
文档评论(0)