- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构习题参考
1.使用模板类。先阅读《模板类快速入门指南》
2.一般的简单情况,直接实例化模板类就可以。例如 linkListint a;
3.有一些数据结构要求使用模板里没有提供的函数接口。一般做法是从模板类中派生一个具体的类出来。如参考答案
class Mylist: public linkListint
{
public:
};
Mylist 的其它地方和一般的类完全没有区别。 linkListint就可以当成一个具体的一般类看待。使用的时候,非常简单:
Mylist a;
理论习题
2
#include ../../SourceCode/arrayList.h// 引入 arrayList.h,使用了相对路径
当前目录是 .vcxproj 文件所在的目录, ..表示上一级目录。 ../../SourceCode/ 表示上级上级目录下的 SourceCode目录。
注本题参考答案并没有用上递增的条件。可以进一步优化
#include ../../SourceCode/linkList.h
#include ../../SourceCode/linkList_pro.h
此处 linkList_pro.h 是一个新的类,有一个高级功能
一个类一对文件: .h 以及 .cpp
1 / 6
如 Mylist 类分别在 Mylist.h 中定义,在中实现
class Mylist: public linkListint
{
public:
Mylist()
{
}
遍历指针 ,使用两个指针来遍历
void Run(int mi, int ma);
};
这个比较简单做法, linkListint完全被当成一个普通类来看待。
Mylist 实现的是一般性的做法。通过用前驱 cursorPrev,和当前指针 cursor 来遍历,这个做法必须熟练掌握。
Mylist_pro 是一个非常高级的做法。使用一个迭代器。其中技巧,需要仔细体会。 5.
char ch;
字符 :(ch= ’a’ ch= ’z’) || (ch= ’A’ ch= ’Z’)
数字 :ch= ’0’ ch= ’9’
6.
注意考虑没有 k 个元素可删的情况
7.
使用 linkList_pro 会比较简单,一边遍历一边删除其中的结点
2 / 6
8,9
同时遍历两个线性表
的伪码:
int ia=0,ib=0;
for(; iala.length(); ia++)
{
int a,b;
a = la. getValue(ia);
b = lb. getValue(ib);
while(iblb.length() ba)
{
lb++;
b = lb. getValue(ib);
}
if(a==b){
lb++;
//
}
}
实验题
1.
3 / 6
一个类一对文件
studentInfo ,Mylist , Mylist_master
studentInfo 是学生类 / 结构体。
需要重载输出 ,这个运算符重载在 void arrayListT :: print() const 里要用
到
Mylist 直接从 arrayListStudentInfo派生而来
一般做法:几个排序就几个函数
class Mylist: public arrayListStudentInfo
{
public:
Mylist(int size): arrayListStudentInfo(size){} public:
void sort_by_age();
void sort_by_height();
};
需要实现的函数都放在 Mylist 中
Mylist_master 使用了比较高级的技巧
排序的时候传入了一个函数指针
排序函数里关键一步是 比较运算,比较的时候传入的就是这个函数指针
首先定义函数类型
// 定义函数指针类型 CompareFunction,注意定义格式
4 / 6
typedef bool CompareFunction(struct StudentInfo , struct StudentInfo );
表示的是类似
bool CompareFunction(struct StudentInfo , struct StudentInfo )
{
}
这样的比较函数
void Mylist_master::sort(CompareFunction fun)// 传入函数指针
传入函数指针 fun,比较的时候用法
if(fun(aList[j], aList[j-1]))// 此处的比较调用了函数
原来的写法是 if(aList[j]aList[j-1]),注意比较 fun(,)和写法的差异。前者通用性更大,完全可以让用户自由定
原创力文档


文档评论(0)