《数据结构》第一章同学们提问第45到66楼参考答案
《数据结构》第一章节绪论问题回答45楼到66楼????? 本答案由信管1133班第一组(林庆浩,何景涛,易玉环,陈诗韵)负责整理。先表示谢意。大家如果有问题请和他们讨论。?45.用伪代码和C++描述两种方法来描述算法各有什么优缺点? 伪代码描述算法:伪代码是介于自然语言和程序设计语言之间的方法,它采用某一程序设计语言的基本语法,操作指令可以结合自然语言来设计。优点:能非常完整地表示程序结构的代码,写起来方便,快。 缺点:不能运作 C++描述算法:优点:局部变量可以不声明,并且不用在主函数中调用。使得算法的描述简明清晰,既不拘泥于C++语言的实现细节,又容易转换C++程序。缺点: ?46.请问一个逻辑结构怎样选择最优的存储结构? 这个要根据算法分析时间复杂度,时间复杂度最好是O(1),也就是最优情况,但是每种存储结构都有自己的优缺点,比如顺序表修改、查询都很简单,时间复杂度为O(1),但插入操作的时间复杂度就没那么简单,因为你有可能要移动很多个元素,那么时间复杂度就不是最优情况还有链表的好处是插入简单,只要建立个新结点,连接上去就可以,时间复杂度也是O(1),但要查询就挺麻烦,因为你不知道你要查找的元素在哪,所以就要从头结点一个一个比较查询,直到查到你要的元素。那么它的时间复杂度也不是最优情况。 ?47.数据的存储结构包括哪两种? 顺序存放和非顺序存放 ?48.我们知道T(n)<=c X f(n),那么常数C代表什么? c就是一个常数,如3f(n)。增长趋势是由f(n)由决定,也就是说f(n)和3f(n)二者图像是“平行”的。参照书P13图。 ?49. 若伪代码抽象级别高,则其自然语言的数量多一些还是少一些? 多一些 ? 50楼:ADT指的是什么? 答:ADT指的是抽象数据类型,是一个数据结构以及定义在该结构上的一组操作的总称。 ?51楼:如果说数据的逻辑结构是采用存储结构来存储的,那么存储结构是怎么体现或反映数据与数据之间的逻辑关系? 答:数据的存储结构通常为顺序存储结构和链接存储结构,在顺序存储结构中数据之间的逻辑关系由元素的存储位置表示,在链接存储结构中数据之间的逻辑关系是用指针来表示的。 ?52楼:数据类型与ADT的区别是什么? 答:数据类型指的是高级程序设计语言支持的基本数据类型,而ADT指的通过各种工具对数据结构的概念类型的描述,简单地说是指一个数学模型以及定义在该模型上的一组操作,是一个实现包括储存数据元素的存储结构以及实现基本操作的算法,在这个数据抽象思想中,数据类型的定义和它的实现是分开的。 ?53楼:伪代码相对于其他描述方法来说更加形象具体,因此它被称为算法语言吗?我们平时描述算法一般用哪种描述方法呢? 答:伪码是一种算法描述语言。使用伪码的目的是使被描述的算法可以容易地以任何一种编程语言实现。我们一般可以使用自然语言、流程图、程序设计语言和伪代码来对算法进行描述。 ?54楼:数据运算有哪5种运算? 答:1.插入运算;2.删除运算;3.查找运算;4.修改运算;5.排序运算 ?56、逻辑结构和储存结构直接是有些什么联系吗? ?61、用指针实现链表是因为每个结点有两个部分,一个是链表中保存的实际数据,另一个是指针,用指针指向下一个节点的数据,从而实现链表结构,那么用指针实现图结构和树结构呢???每个节点增加几个地址来实现么??? 这个问题以后再学习树结构和图结构会讲到。 ?62、数据的存储结构只有顺序存储结构和链接存储结构么???还是我们学的这本书只讲这两种??? 顺序存储结构和链式存储结构是最基本的两种存储结构。还有向量式存储结构、散列式存储结构等。 ?63、ADT的定义是静态的吗?一个程序里怎样识别ADT的使用? ADT称为抽象数据类型,以我的理解,它是我们转换现实世界和计算机世界的桥梁,也是一种现实事物的抽象模型。ADT会转换为算法,算法会用程序语言来表达。 ?64、问题1:课本教材1,第13页,图1-11大O记号的含义。这幅图应该怎么理解? 老师答:1)表明当规模增加时,T(n)和cf(n)增长趋势相同,所以对于cf(n)表达式就写成f(n)了。前面系数可以省去掉。 ? 65、算法的空间复杂度中的“空间”是指? 除算法本身和输入输出数据所占的空间外,算法临时开辟的存储空间。一般指的是内存空间。 ?66、在第8页的对ADT的说明中,ADT的定义和实现是分开的,那么关于ADT和算法之间的关系是不是就是算法是ADT的具体实现的方式? 是的,ADT只是抽象的数据模型,需要算法来实现。 (编辑:ASP站长网) |