1.串的学习:
1)对串的操作有在串中查找某个子串,求取一个子串,在串的某个位置插入一个子串,删除一个子串等;
2)串的存储结构分为串的顺序存储、串的链式存储;若多用插入及删除操作则使用链式存储更方便;
3)串的模式匹配算法分为BF算法和KMP算法,BF算法的匹配过程易于理解,但是该算法在最好情况下的平均时间复杂度为O(n+m),最坏情况下的平均时间复杂度为O(nxm),算法的时间复杂度较高。KMP算法较为复杂一点,但它可在O(m+n)的时间数量级上完成串的模式匹配操作,KMP算法最大的特点是指示主串的指针不需要回溯,对处理从外设输入的庞大文件很有效。
数组的学习:
学习了数组分别以列序,行序为主序的存储方式,以及一些特殊矩阵的压缩存储。
我们也学了稀疏矩阵的存储结构,了解到稀疏矩阵是非零元素较零元少,且分布没有一定规律的矩阵。
2.这次选的是实践题的稀疏矩阵程序
因为书上关于这方面的知识阐述很少,虽然上课跟着老师思路初步了解了解题方法,但是由于最开始不熟悉有些跟不上,后来课后翻书复习的时候,看着书上的笔记知道最开始应该定义结构体创建三元表,但是只了解了开头的做法,后面的有点无从下手,就从网上找了稀疏矩阵相关算法进行查看,最后定义了两个结构体:
后面就开始构思main函数,刚开始要构建一个三元表,我以为需要再写一个函数:
后来写着写着main函数就感觉有点奇怪,构思的时候把思路都想出来了,但是到具体实现的时候有些函数和表达式不知道怎么去完成,不知道该怎么写下去:
在这里被卡了很久,后来去问了舍友,舍友把她做题的思路和代码给我说了一下,后面就懂了该怎么写,懂了之后不看她们的代码自己动手写还是有一点卡住,最后还是先把怎么查找元素的函数写出来了,到最后main函数不会这么复杂,花了较长时间一边回忆理解一边改正语法解题,最后写出的代码:
编译的时候一直是部分正确,有一部分的答案错误,来回检查代码很多次找不出问题,后面去找了完成代码的同学,让她帮我看一下代码,才明白前面return ok那里不能这样写,这样会一直都是返回return的值,那结果输出的值就一直都会是某一行某一列,要把ok改成i,这样才能返回所查找元素的下标,才能在不同情况下返回不同的值。
总的来说,做这道编程题花了我很长时间,在脑海中构思的思路很完整了,但是要真的打出代码实现还是有一定的难度,在完成作业前需要上网查找资料了解更多相关知识,在打代码过程中遇到问题先自己思考解决,实在无法解决要求助同学或老师,在打出代码后要不断的修改bug,不断地调试,这是一个让人觉得很难受的过程,但是完成后也会很开心。打这道编程题的时候也在时刻警醒着我还不熟悉这些内容,一定要多看书多看资料多实践。
3.上次的目标大致完成了,下次的目标是将书上串和数组的相关知识再次仔细地看一遍,并在慕课网上找相关课程观看,预习好下一章内容。
原文地址:https://www.cnblogs.com/luolllll/p/10708246.html