ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:265.50KB ,
资源ID:9584289      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-9584289.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验六_继承与派生(下).doc)为本站会员(hwpkd79526)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

实验六_继承与派生(下).doc

1、 实验报告课程名称 面向对象程序设计系 别 机械与电子工程系班 级 N 电信-091F学生姓名 邓建平 07学 号 24092200003任课教师 齐 琦南湖学院教务办实验六 继承与派生(下)一、实验目的:掌握类模板和模板类的概念,了解它们的定义和使用掌握多重继承的使用二、实验内容;题目一:定义一个单向链表的模板类,实现添加、删除、查找操作。要求使用模板类。 。注意:可参考课堂代码实现。代码:#include #include using namespace std;template class List; /对 List 类的申明template class Node /定义一个描述节点的类

2、T data;Node * next;public:Node();Node(T d);void InsertAfter(Node *p);Node * RemoveAfter();friend class List;templateNode:Node()data=0;next=NULL;templateNode:Node(T d)data=d;next=NULL;templatevoid Node:InsertAfter(Node *p)p-next=next;next=p;templateNode * Node:RemoveAfter()Node*temp=next;if(next!=NUL

3、L)next=temp-next;return temp;templateclass List /定义一个描述链表的类Node * head,* rear;public:List(); /空链表的构造(链表中只含表头结点)void MakeEmpty(); /清空链表(删除链表中除表头结点以外的所有结点)List(); /析构函数Node * Find(T d); /查找数据域与 d 相同的结点(返回所找到结点的指针)int Length(); /计算链表长度(返回链表中除表头结点以外的结点个数)void PrintList(); /输出链表中各结点的数据域void InsertFront(N

4、ode *p); /向前插入结点(链表首部插入一个结点)void InsertFront(T d);void InsertRear(T d);void InsertRear(Node *p); /向后插入结点(链表尾部插入一个结点)void InsertOrder(Node *p); /有序插入结点(插入结点后链表仍有序)Node * CreateNode(T d); /创建数据域为 d 的新结点(返回新结点的指针)void Save();void Read();void CreateList();Node * DeleteNode(Node *p); /从链表中删除指针为 p 的结点; te

5、mplateList:List()head=rear=new Node;templatevoid List:MakeEmpty()Node *temp;while(head-next!=NULL) temp = head-next ;head-next = temp-next ; delete temp ; rear = head;templateList:List()MakeEmpty();delete head;templateNode * List:Find(T d) Node*temp=head-next;while(temp != NULL return temp;templatei

6、nt List:Length() Node*temp = head-next;int count = 0 ;while (temp!= NULL)temp=temp-next ;count+ ;return count ;templatevoid List:PrintList()Node*temp = head-next;while(temp!=NULL)coutdatanext ; templatevoid List:InsertFront(T d)Node *temp=new Node;temp-data=d;temp-next=head-next;head-next=temp;if(re

7、ar=head)rear=temp;templatevoid List:InsertFront(Node*p) p-next = head-next ; head-next = p ; if(rear = head )rear = p ;templatevoid List:InsertRear(T d)rear-next=new Node;rear-next-data=d;rear=rear-next;rear-next=NULL;templatevoid List:InsertRear(Node*p) rear-next =new Node;rear-next-data=p-data;rea

8、r=rear-next;rear-next = NULL ; templateNode * List:CreateNode(T d) Node *temp = new Node(d);return temp ; templatevoid List:CreateList()T d;coutd)rear-next=new Node;rear-next-data=d;rear=rear-next;rear-next=NULL;templatevoid List:Save()ofstream outfile(“data.txt“,ios:app);Node*temp = head-next;while

9、(temp!=NULL)outfiledatanext ; templatevoid List:Read()ifstream infile(“data.txt“);if(!infile)coutd)rear-next=new Node;rear-next-data=d;rear=rear-next;rear-next=NULL;templatevoid List:InsertOrder(Node*p)Node *temp1 = head ;Node *temp2 = head-next ; /temp1 指向 temp2 的前面的一个结点while(temp2!=NULL) if(p-data

10、temp2-data)break ; /找到第一个比要插入结点小的结点,则可以确定新结点须插入在 temp2 前。temp1=temp2;temp2=temp2-next; temp1-InsertAfter(p);if (rear=temp1) rear=temp1-next; templateNode * List:DeleteNode(Node*p) Node *temp = head ;while(temp-next!= NULL if(temp-next = rear ) rear = temp ;return temp-RemoveAfter();void main()List l

11、;l.CreateList();l.PrintList();coutusing namespace std; class personchar *name;int age;public:person()cout“the constructor of class person!n“;person()cout“the dstructor of class person!n“;class student: virtual public personchar *department;int level;public:student()cout“the constructor of class stud

12、ent!n“;student()cout“the constructor of class student!n“;class teacher: virtual public personchar *major;int salary;public:teacher()cout“the constructor of class teacher!n“;teacher()cout“the constructor of class teacher!n“; class Postgraduate:public student,public teacherpublic:Postgraduate()cout“the constructor of class Postgraduate!n“;Postgraduate()cout“the constructor of class Postgraduate!n“;main()Postgraduate a();三、实验总结在本次实验中主要强调多重继承问题。在派生类的声明中,基类可以有一个,也可以多个,如果有多个基类,则这种继承方式称为多重继承。这时的派生类同时得到了多个已有类的特征。在使用多重派生的时候要避免出现二义性,此时可以使用成员名限定来消除二义性,也就是在成员名前用对象名及基类名来限定。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报