第四章内容小结

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

时间: 2024-10-30 03:25:17

第四章内容小结的相关文章

第三章内容小结

1.内容小结:在第三章的学习中我们学习到了两种特殊的线性表:栈和队列. (1)特殊性:栈:限定仅在表尾(栈顶)进行插入或者删除的线性表,后进先出. 队列:只允许在表的一端进行插入(队尾),而在另一端(队头)进行删除的线性表.先进先出. (2)存储方式:顺序存储(顺序栈:循环队列)和链式存储(链栈:链队). (3)主要操作: 栈:入栈和出栈.对于顺序栈的入栈和出栈操作前要判断栈满或栈空. 队列:入队和出队.对于顺序队的循环队列进队和出队操作要判断队满或队空.涉及队头或队尾指针的修改都要将其对MAX

【数据结构】第四章学习小结

串.数组 在第四章中,我学到的主要是关于串与数组的内容,至于广义表,既然老师让我们课后有时间去看,那我这里就先不讲广义表了(其实只是粗略的看了一下,还没看懂) 在上学期的c++中我就已经学过有关串的一些知识,对于串还是可以很好的理解的,在数据结构中,串将被看作是一种特殊的线性表,跟线性表一样,串也有两种基本存储结构,个人觉得顺序存储结构对于串的运用比较方便,简单易懂,所以在作业题中会首先考虑使用顺序串. 串有许多很重要的应用,例如搜索引擎,数据压缩等,这些应用都离不开串的模式匹配算法(子串的定位

数据结构第四章学习小结

第四章主要是串和数组的学习,之前对串和数组的应用仅限于对其单独处理,本章学习着重于对具体题目的实际操作,实践了串的模式匹配算法,对其有了更深入的了解,数组的应用拓展到了稀疏矩阵的存储的实现. 一.串 串的模式匹配 BF算法 首先未匹配到串尾时,将两个字符串一一匹配,可用C++自带的length()函数实现 while(i<=S.length()&&j<=T.length()) 接下来就是匹配的过程 if(S[i]==T[j]){ i++;j++; }//若匹配则继续比较下一位

Android初级教程理论知识(第四章内容提供器)

之前第三章理论知识写到过数据库.数据库是在程序内部自己访问自己.而内容提供器是访问别的程序数据的,即跨程序共享数据.对访问的数据也无非就是CRUD. 内容提供者 应用的数据库是不允许其他应用访问的 内容提供者的作用就是让别的应用访问到你的数据库 写自定义内容提供者的代码就是在被访问程序与主访问程序之间交替写代码. 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查数据库的代码,举例增方法.自定义继承使用ContentProvider @Override

第二章内容小结

本章以线性表的定义和特点为切入点,对顺序表和链表的初始化,取值,查找,插入,删除等相关操作进行详细的介绍.对线性表顺序存储和链式存储的相对于各种操作的效率.优缺点以及时间复杂度进行了详细的比较.而顺序表一般可用数组进行表示,若要进行随机查找操作用顺序表更好,若有大量的插入删除操作则选择可用指针表示的链表进行存储更好.在这章我们也明白了元素在顺序表和链表中的存储方式. 最开始在本章学习中我比较多的是懂得了具体的存储方式和结构,编程能力却仍比较弱,懂得如何进行却总打出错误代码,后来就是要反复地看数据

第四章学习小结 串的模式匹配 解题心得体会

串的模式匹配 解题心得体会 关于串,模式匹配是其一个很重要的问题.针对这个问题,书上讲了两种模式匹配的算法,即BF算法和KMP算法,下面针对这两种算法的实现谈谈我的心得. 一.BF算法的探索 [错误代码1] #include<iostream> #include<string.h> using namespace std; typedef struct{ char ch[1000002]; int length; }SString; void Index_BF(SString S,

DirectX12 3D 游戏开发与实战第四章内容(上)

Direct3D的初始化(上) 学习目标 了解Direct3D在3D编程中相对于硬件所扮演的角色 理解组件对象模型COM在Direct3D中的作用 掌握基础的图像学概念,例如2D图像的存储方式,页面翻转,深度缓冲,多重采样以及CPU和GPU之间的交互 学习使用性能计数器函数,依次读取高精度计时器的数值 了解Direct3D的初始化过程 熟悉本书应用程序框架的整体结构,在后续的演示程序中可以经常看到应用程序框架的整体结构 4.1预备知识 要学习Direct3D的初始化流程,我们需要了解一些基本的图

第四章学习小结

这两周上课学的较多且比较有印象的是串的模式匹配算法那道题 同时可以用BF或者KMP算法进行解决. 一开始学BF算法时就在想如何改进可以使匹配更加简便 后来KMP的学习让我对串的学习有了更深入的了解 同时BF和KMP算法之间的联系也是一个算法改进的很好学习范例 7-1 串的模式匹配 给定一个主串S(长度<=10^6)和一个模式T(长度<=10^5),要求在主串S中找出与模式T相匹配的子串,返回相匹配的子串中的第一个字符在主串S中出现的位置. 输入格式: 输入有两行: 第一行是主串S: 第二行是模

DS第四章学习小结

本章最令人印象深刻的题就是AI核心代码这题了.如下 说实话,刚看到这题真的懵了,虽然只是一道题,但总给人6题的感觉.尽管困难重重,但还是在陈晓梅老师的指导下,大致完成了此题. 逻辑分析 先定义数据结构,自然是字符数组/字符串最初考虑主函数逻辑,主要是读取输入语句,并调用接口处理输入语句并输出.基本流程是,读入一句,对其进行扫描.判断.操作,再存到新的字符串,最后输出新的字符串. 一开始输入部分就卡住了,因为不知道怎么处理回车后还能输入数据,进度就陷入了停滞,不过课上根据老师所说getchar()