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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(西安石油大学大二上C++面向对象程序设计课件第5章程序Word下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

西安石油大学大二上C++面向对象程序设计课件第5章程序Word下载.docx

1、 strcpy(Title, ); Code = 0;Retrieval(char *title, long code) strcpy(Title, title); Code = code;void Retrieval:Show() cout 资料: Title t Code endl;class Book: public Retrieval /图书类private: char Author20; /作者名 char IndexCode10; /内部分类号 Book(); Book(char *author, char *title, char *index, long code); /显示图

2、书信息Book:Book(): Retrieval() strcpy(Author, strcpy(IndexCode, Book(char *author, char *title, char *index, long code): Retrieval(title, code) strcpy(Author, author); strcpy(IndexCode, index);void Book:图书: Author IndexCode class Magazine:public Retrieval /杂志类 int Volume; /卷号 Magazine(); Magazine(char

3、*title,int vol,long code); /显示杂志信息Magazine:Magazine(): Volume = 0;Magazine(char *title, int vol, long code): Volume = vol;void Magazine:杂志: Volume 读者类设计如下:/Reader.h class Reader /读者类 char Name20; /读者姓名 /借书证号 Book *books; /所借图书 int CounterB; /已借书数目 Magazine *magazines; /所借杂志 int CounterM; /已借杂志数目 Rea

4、der(); Reader(char *name, long code); Reader(); /显示读者信息 void ShowBooks(); /显示所借书 void ShowMagazines(); /显示所借杂志 void AddBook(Book it); /添加所借书 void AddMagazine(Magazine it); /添加所借杂志 void DelBook(Book it); /归还所借书 void DelMagazine(Magazine it); /归还所借杂志Reader:Reader() strcpy(Name, books = new Book5; Coun

5、terB = 0; magazines = new Magazine10; CounterM = 0;Reader(char *name, long code) strcpy(Name, name);Reader() delete books; delete magazines;void Reader:读者:t Name ShowBooks() if(CounterB = 0) cout 书已还清! return; for(int i = 0; i CounterB; i+) booksi.Show();ShowMagazines() if(CounterM = 0) 杂志已还清! Count

6、erM; magazinesi.Show();AddBook(Book it) if(CounterB 0; i-) if(booksi.GetCode() =it.GetCode() break; for(int j = i; j j+) booksj = booksj+1; CounterB-;AddMagazine(Magazine it) if(CounterM #include Retrieval.hReader.hvoid main(void) Book b1(朱战立, C+面向对象程序设计P306/5, 10001); Book b2(数据结构使用C语言(第3版)P306/6,

7、10002); Magazine m1(计算机学报, 13, 20001); Magazine m2(计算机应用, 12, 20002); Reader r1(张三, 30001); Reader r2(李四, 30002); r1.Show(); r2.Show(); r1.AddBook(b1); r1.AddBook(b2); r1.ShowBooks(); r2.AddMagazine(m1); r2.AddMagazine(m2); r2.DelMagazine(m1); r2.ShowMagazines();程序运行输出如下: 张三 30001 李四 30002C+面向对象程序设计

8、 朱战立 P306/5 10001数据结构使用C语言(第3版) 朱战立 P306/6 10002计算机应用 12 20002问题:进一步分析图书馆的图书和杂志管理和借阅方式,设计一个基本符合图书馆实际工作方式的图书和杂志借阅系统。.1.2 链式堆栈私有继承举例私有继承的特点是:基类的保护成员和公有成员将成为派生类的私有成员。私有继承的应用意义是:派生类在利用基类已经设计完成的代码资源的同时,限制派生类的对象调用基类中的公有成员。【例51.1】 先设计一个带头结点的单链表类,再设计一个带头结点的链式堆栈类,要求带头结点的链式堆栈类利用带头结点的单链表类的代码资源。设计:带头结点的链式堆栈和带头结

9、点的单链表在结构上完全相同,其构造都是一个由头指针指示的有size个结点的链表,惟一的差别是单链表允许在任意结点位置插入和删除,而链式堆栈只允许在头结点后插入和删除。带头结点的单链表结构如图5-7(a)所示,带头结点的链式堆栈结构如图5-7(b)所示。图51.2 单链表和链式堆栈(a)单链表;(b)链式堆栈单链表类的成员变量包括头指针和结点个数,成员函数包括:取结点个数、判链表空否、插入结点、删除结点、取结点的数据值。链式堆栈类的成员变量包括头指针和结点个数,成员函数包括:取结点个数、判堆栈空否、入栈、出栈、取栈顶结点的数据值。为了简化链式堆栈类的设计,可以把链式堆栈类设计成单链表类的派生类,

10、这样就可以利用单链表类的代码资源。以入栈为例,单链表类的插入结点是在参数指定的某个结点后插入一个结点,而链式堆栈类的入栈是在头结点后插入一个结点,因此入栈成员函数就可以用参数值固定为0调用插入结点成员函数来实现。链式堆栈类的其它成员函数设计方法类同。由于链式堆栈类只允许在栈顶位置插入结点,不允许在其他位置插入结点,因此,链式堆栈类要私有继承单链表类,这样就能保证外部程序的对象不能在其他位置随意插入结点,从而保证堆栈的正确性。带头结点的单链表类设计如下:/LinList.hstdlib.hclass ListNode /结点类 friend class LinList; ListNode *ne

11、xt; /指向下一结点的指针 float data; /数据元素 ListNode(ListNode *ptrNext = NULL) /构造函数,构造头结点 next = ptrNext; ListNode(const float& item, ListNode *ptrNext = NULL) /构造函数,构造其他结点 data = item; next = ptrNext;class LinList /单链表类 ListNode *head; /头指针 int size; /结点个数 void ClearList(void); /清空链表 ListNode *Index(int pos)

12、 const; /返回指向第pos个结点的指针 LinList(void); /构造函数 LinList(void); /析构函数 int ListSize(void) const; /取结点个数 int ListEmpty(void) const; /判链表空否 void Insert(const float& item, int pos);/插入一个结点 float Delete(int pos); /删除第pos个结点 float GetData(int pos) const; /取第pos个结点的data值LinList:LinList() /构造函数 head = new ListN

13、ode; /头指针指向头结点 size = 0; /定义size的初值为0LinList(void) /析构函数 ClearList(); /清空链表 delete head;void LinList:ClearList(void) /清空表为初始化状态 ListNode *p, *p1; p = head-next; /p指向第一个结点 while(p != NULL) /释放结点空间直至初始化状态 p1 = p; p = p- delete p1; /结点个数置为初始化值0ListNode *LinList:Index(int pos) const/返回指向第pos个结点的指针 if(po

14、s size)参数pos越界出错! exit(0); if(pos = -1) return head; /pos为-1时返回头指针head ListNode *p = head- /p指向第一个结点 int i = 0; /从0开始计数= NULL & pos) /寻找第pos个结点 i+; return p; /返回第pos个结点指针int LinList:ListSize(void) const /取结点个数 return size;ListEmpty(void) const /判链表空否 if(size next ListNode *newNode = new ListNode(ite

15、m, p-next); p-next = newNode; /新结点插入第pos个结点前 size+; /结点个数加1float LinList:Delete(int pos) /删除第pos个结点 if(size = 0) 链表已空无元素可删! ListNode *q, *p = Index(pos - 1); /p为指向第pos-1个结点指针 q = p- /q指向第pos个结点next = p-next- /第pos个结点脱链 float data = q-data; delete q; /释放第pos个结点空间 size-; /结点个数减1 return data; /返回第pos个结

16、点的data域值GetData(int pos) const /取第pos个结点的data值 ListNode *p = Index(pos); /p指向第pos个结点 return p-带头结点的链式堆栈类设计如下:/LinStack.hLinList.hclass LinStack: private LinList /私有继承 LinStack(void): LinList() LinStack(void) int StackSize(void)const /返回堆栈元素个数 return ListSize(); int StackEmpty(void) const /判堆栈空否 retu

17、rn ListEmpty(); void Push(const float& item) /入栈 Insert(item, 0); float Pop(void) /出栈 return Delete(0); float GetTop(void)const /取栈顶元素 return GetData(0);/Exam5-8.cppLinStack.h LinStack myStack; int i;初始元素个数: myStack.StackSize() for(i = 1;= 5; myStack.Push(i);入栈后元素个数:依次出栈的元素:; myStack.Pop() ;结束元素个数:程序运行输出结果为:55 4 3 2 1私有继承方式可以利用已设计完成的基类代码资源,简化派生类的代码设计,但是,这时所有成员函数的执行都是通过调用基类的成员函数实现的,其时间效率会受到一定的影响。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1