- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第11章 数据结构 本章内容安排 数组 记录 链表 数据结构的概念 在程序设计中,我们可以使用变量来存储单个实体,变量的使用非常广泛,但变量不能解决复杂问题。 数据结构是相关变量的集合,这些变量能够单独或作为整体被访问。数据结构代表了有特殊关系的数据的集合。 引入问题 有100个分数,需要读入这些数,处理并打印,同时将这些数据保存在内存中? 独立变量的处理 数组的概念 数组是固定大小,相同数据类型元素的顺序集合。每个元素在数组中有一个固定的位置。 将100个数放入数组中,假设数组的名称为scores,可以称数组中第一个元素为scores[1],第二个元素为scores[2]…… 索引表明元素在数组中的顺序号。现代语言(C、Java等)从0开始索引。 数组元素 循环的方式访问数组元素 独立变量和数组实现的比较 编写语句数量比较 独立变量:100条语句读,100语句写,100条语句处理,共需要编写300条语句 数组配合循环:每个循环体2条语句,加上初始化索引,总共需要编写12条语句 执行的机器周期数 使用数组和循环,所需要执行的机器周期数没有减少,反而有所增加,需要初始化、递增循环变量和测试循环条件等负担 更应该关心所编写的程序行数。 1、数组名与元素名 数组名是整个结构的名字,代表整个结构;元素名是对某个特定元素的标识。 如数组的名称为scores,元素名为数组名加索引,如scores[1]。 2、二维数组 在程序中二维数组的需求也非常多,如表格包括行和列,需要二维数组表示。 二维数组需要两个索引下标,前面的下标表示元素所在行,后面的下标表示元素所在的列。 假设二维数组名为scores,有5行4列,则a[1][2]表示第1行第2列的元素;a[2][3]表示第2行第3列的元素。 二维数组 3、存储配置 一维数组以线性方式进行存储,数组中第一个元素存储在内存的低地址处,后面的元素依次连续存储。 二维数组采用多数情况下采用行主序存储,“逐行”存储,先存储第一行元素(第一行的首个元素在低地址处,后面的元素依次存储),存完第一行之后,接着存储第二行元素…… 行主序存储和列主序存储 例题 Students是一个100×4的二维数组(100行和4列),假定元素students[1][1]存储地址为1000,每个元素占用1个存储地址,求元素students[5][3]的地址,假定使用行主序存储,索引下标从1开始 解答 y=1000+4*(5-1)+(3-1)=1018 4、数组操作 查找元素:查找匹配元素值的对应元素的序号。对未排序的数组采用顺序查找,对有序的数组采用折半查找。 元素的插入 尾部插入:新数据直接插入原数组的尾部 开始或中间插入:需要将插入位置之后的所有元素向后移动,最后插入指定元素。 数组操作 元素的删除:删除某个元素后,后续的元素需要向前移动。 检索元素:随机存取一个元素,直接通过下标索引的方式进行访问,如scores[9] 数组的遍历:应用与数组中每个元素的操作。 求数组元素的平均值 5、数组应用 数组适合于插入和删除操作较少,而需要大量的查找和检索操作的场合。 在需要大量插入和删除操作情况下,不适宜使用数组。 本章内容安排 数组 记录 链表 记录 记录(结构体)是一组相关元素的集合,它们可能是不同的类型,整个记录有一个名称。记录中的每个元素称为域。域是具有含义的命名数据的最小元素。 数组中所有元素必须是同一种类型,记录中的元素可以是相同或不同类型。 1、记录的示例 记录 记录名与域名 记录的名称是整个结构的名字,域的名字允许我们存取特定的域。 右图中,记录的名字为student,域名字分别为: student.id student.name student.grade 2、记录与数组 数组定义了相同类型元素的集合,常用于描述多个同类对象的信息,如定义一个班级的学生成绩(40个同学)。 记录常用于定义同一个对象的属性集合,如描述某个学生的学号、姓名、成绩等,域的数据类型往往不同。 3、记录数组 一种特殊的数组,本身是数组,包含多个元素。数组中的每个元素是一个记录。 记录数组往往用于定义多个对象的属性信息。如班级中有30名同学,可以定义一个记录的数组,每个记录描述一位学生的信息。 记录数组 示例:访问记录数组中的每个记录域 示例:循环访问记录数组 本章内容安排 数组 记录 链表 链表 链表也是一个有序数据的集合,但每个元素包含下一个元素的地址。每个元素包含两部分:数据和链(链是存储下一个元素地址的指针)。 此处只讨论单链表,每个节点仅有一个指向后继节点的链。通常使用一个指针变量指向第一个元素,称为链表的头指针。链表的最后一个元素包含一个空指针,标识链表的结束。 链表示意 节点 链表中的元素习惯
文档评论(0)