1.思维导图及学习体会
1.1第一章绪论知识点思维导图
1.2 学习体会
通过本周对于数据结构第一章绪论的学习,大致了解到学习数据结构与学习一门编程语言的区别。数据结构研究数据以及数据之间的关系,而编程语言是应用。在学习难度上看,个人认为学习数据结构要更加吃力。原因在于数据结构要更加的抽象,更加的难以理解,有时候书上的一个概念,需要经过仔细的揣摩才能想明白。再有就是关于时间复杂度与空间复杂度的计算,不是特别的熟练,还需经过进一步的训练加强。在写大作业时,首次在代码中应用了c++的语法,受益匪浅。
2.大作业作业内容
2.1 设计日期的ADT类型
ADT Date{
数据对象:
D = {year,month,day | year,month,day属于int类型}
数据关系:
R = {<year,month>,<month,day>}
数据操作:
Status InitDate( DATE &date, ElemType year, ElemType month, ElemType day);
//操作结果:构造了日期数据结构Date,year为Date中的年,month月,day日。
Status DateDestroy(DATE &date);
//操作结果:Date被销毁。
Status IsLeapyear( ElemType year , ofstream &outFile);
//操作结果:判断是否是闰年。
Status MonthName( DATE date, ofstream &outFile);
//操作结果:输出月份英文名。
Status WeekDay(DATE date, ofstream &outFile);
//操作结果:返回星期几。
Status AddDays(DATE date, ofstream &outFile);
//操作结果: 返回当前日期增加days天的日期。
Status CmpDate(DATE date, ofstream &outFile);
//操作结果:返回日期间的逻辑关系。
Status DateJudge(DATE date, ofstream &outFile);
//操作结果:判断是否是合法数据。是返回TRUE,否则返回FALSE。
Status DateJudge(ElemType year, ElemType month, ElemType day); /*DateJudge函数重载*/
//操作结果:判断是否是合法数据。是返回TRUE,否则返回FALSE。
}ADT Date
2.2.数据抽象:头文件)
Status.h
Date.h
2.3数据封装说明
(1)构造日期数据类型函数
做法:动态申请内存,把年月日存入数组date中。
(2)销毁日期数据类型函数
做法:释放所申请的空间。
(3)判断是否是闰年函数
做法:判断是否是闰年并输出。
(4)输出月份英文名函数
做法:主要通过下标查找MONTH的方法。
(5)判断星期几函数
做法:主要通过下标查找WEEK的方法。
(6)返回当前日期增加days天的日期函数
做法:通过遍历递增日期的方法。
(7)比较日期间的逻辑关系函数
做法:首先输入待判断的年月日,并对输入数据进行合法性判断。之后进行比较。关于判断符号的选取,采用了下标查找字符串中的字符的方法。
(8)判断是否是合法数据函数
做法:直接对传进的参数进行判断。数据合法返回TRUE,否则返回FALSE。
(9)判断是否是合法数据函数
做法:是对上一个JudgeDate函数的重载,具体操作基本不变,主要区别在于针对不同的参数达到相同的目的。
(10)main函数
3.结果展示
测试包含了不合法数据
4.调试碰到问题
- Q1:在进行ofstream类型参数传递时曾引发头文件错误,并没有发现错误。后来改用了每次函数都开闭out.txt文件的方式勉强达到了预期要求,但导致代码冗长,不是很满意。后来看到了翁凌涛同学的代码,恍然大悟,对ofstream类型形参添加引用后问题迎刃而解。
- Q2:在后期处理“数据是否合法时”曾纠结是否重新写函数。查阅资料后发现c++语法允许函数名重载。
- Q3:CSDN博客是个好地方,很多无法自己解决的问题在上面都能找到解决方法。