徐师大数据结构复习资料.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法题(26) 简答题(40) 综合题(24) 论述题(10) 结论(10) * 线性表(10) * 栈队列(18) * * 串(4) * 数组(4) * 树与二叉树(17) * * 图(6) * * 查找(16) * * 排序(15) * * 注: 算法题: 程序填空;添加注释;写运行结果;画图;描述算法思想。 综合题: 画图;根据图表回答问题。 数据结构考试重点(答案仅供参考) 绪论 谈谈你对“数据结构”概念的理解。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合,在任何问题中,数据元素都不是孤立存在的。而是他们之间存在着某种关系,这种数据元素相互之间的关系称为结构,这也是我们要讨论的数据结构的主要内容。一般来说,数据结构包括以下三方面的内容: 数据元素之间的逻辑关系,也称数据的逻辑结构。数据的逻辑结构是抽象的,它不依赖计算机的实现,只依赖人们对事物的理解和描述。 数据元素及其关系,在计算机内部(内存)中的表示,称其为数据的物理结构或数据的存储结构。 谈谈你对“抽象数据类型(ADT)”的理解。 抽象数据类型(Abstract Data Type 简称ADT)是指一个数学模型以及定义在此数学模型上的一组操作。抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现。抽象数据类型是与表示无关的数据类型,是一个数据模型及定义在该模型上的一组运算。对一个抽象数据类型进行定义时,必须给出它的名字及各运算的运算符名,即函数名,并且规定这些函数的参数性质。一旦定义了一个抽象数据类型及具体实现,程序设计中就可以像使用基本数据类型那样,十分方便地使用抽象数据类型。 线性表 顺序表的动态内存分配的好处是什么? 长度能动态增长;根据实际需要分配所需内存大小,合理利用资源 不需要预先分配存储空间; 单链表中引入“头结点”的好处是什么? 什么情况下单链表需要使用“尾指针”? (1)由于开始结点的位置存放在头结点的指针域中,所以对链表第一个位置的操作同其他位置一样,无须特殊处理。 (2) 只有“头指针”时,访问“头”方便,而访问“尾”不方便。有时候,根据需要,一个单向循环链表只设置尾指针,而不设置头指针。此时访问“头”和“尾”都很方便。 在主调函数中构建了一个“不带头结点”的单链表L1(即该链表已完成初始化,甚至链表已不空),在子函数中对该单链表进行 插入/删除 操作。说明 在参数传递时,使用“引用”与不使用“引用”的区别。 在主调函数中 声明了 一个单链表L1,在子函数 InitLink( )中对该单链表 初始化 为一个“带头结点”的单链表。在 “不使用引用型参数”的情况下, 写出初始化函数。 typedef int data; typedef struct LNode{ data d; Struct LNode *next; }LNode ,*LinkList; LinkList initialize (void) { LinkList L; L=(LinkList)malloc (sizeof(LNode);L-next=NULL;return L; } 2)写出调用该函数的语句。 Void main () { LinkList L1; L1=initialize(); . . . return 0; } 栈队列 对“链栈”, 哪一端是“栈顶”?为什么? 链头作为栈顶 原因:链栈是运算受限的单链表,其插入和删除操作仅限制在表头位置上操作,因此将链头作为栈顶方便操作。 链栈中还要不要“头结点”?为什么? 不要。原因:链栈是运算受限的单链表,其插入和删除的操作仅在链表头位置上进行。如果加了头结点,等于要对头结点之后的结点进行操作,反而使算法更复杂。 顺序栈采用动态内存分配,数据结构定义如下: typedef struct sStack{ DataType *base; DataType *top; int stacksize; //最大容量 } SqStack; 如何求栈高? Int stackHeight (SqStack sq) { return sq.top-sq.base; } 2)能否将 top 定义成 int 类型? 可以 链队列的“队头”与其它链式结构(如 链栈 或者 单链表)有什么不同? 为什么引入“循环队列”? 写出循环队列 判队满,判队空 以及 求队长的表达式。 原因:为充分利用向量空间,克服假溢出现象 方法: 1)设置一个队长变

文档评论(0)

wuailuo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档