c实验题分析和总结.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

hao187 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地湖北
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档