普通高中教科书·信息技术选择性必修1 数据与数据结构(沪科技版2019).pdf
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
1 0人已下载
| 下载 | 加入VIP,免费下载 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 普通高中教科书·信息技术选择性必修1 数据与数据结构沪科技版2019 普通高中 教科书 信息技术 选择性 必修 数据 数据结构 科技 2019
- 资源描述:
-
1、数据与数据结构普通高中教科书选择性必修1数据与数据结构普通高中教科书上 海 科 技 教 育 出 版 社选择性必修 1上海科技教育出版社信息技术信息技术信息技术信息技术PUTONG GAOZHONG JIAOKESHUXINXIJISHUISBN 978-7-5428-7469-69 787542 874696普通高中教科书信息技术选择性必修1数据与数据结构上海科技教育出版社有限公司出版发行(上海市闵行区号景路 159弄A座8楼邮政编码201101)湖南省新华书店经销湖南长沙鸿发印务实业有限公司印刷开本89012401/16印张7.52021年8月第1版2021年12月第2次印刷ISBN 978
2、-7-5428-7469-6/G4468定价:9.54元批准文号:湘发改价费2017343号举报电话:12315ISBN 978-7-5428-7469-69 787542 874696此书如有印、装质量问题,请向印厂调换印厂地址:长沙黄花印刷工业园三号电话:0731-82755298此书如有印、装质量问题,请向印厂调换印厂地址:长沙黄花印刷工业园三号电话:0731-82755298选择性必修 1普通高中教科书上 海 科 技 教 育 出 版 社信息技术数据与数据结构编写人员名单主 编:郑 骏 分册主编:邓桂英主要编写人员(以姓氏笔画为序):丁 祎 于洋鹏 申一頔孙时敏 凌 玲欢迎广大师生来电来
3、函指出教材的差错和不足,提出宝贵意见。上海科技教育出版社地址:上海市闵行区号景路 159 弄 A 座 8 楼 邮政编码:201101 联系电话:021-64702058 邮件地址:亲爱的同学:今天,我们生活的时代处处离不开数据。每个人、每个企业、每个行业乃至整个社会每天都产生着各种各样的数据。日积月累,这些数据汇聚成的大数据,经过科学的管理与分析,从而产生新的价值并服务于各行各业和人们的日常生活。可以说,数据已成为了一种新的原材料、一种新的生产资料和一种新的基础设施。可能你每天都在不知不觉地采集数据、处理数据、利用数据,但是知道数据在计算机中究竟是如何存储的吗?有着怎样的结构?如何才能被计算机
4、高效处理?在数据与数据结构的学习中,我们将一起通过实例进一步探讨数据及其对社会各领域的影响;剖析日常生活中的实际项目,经历建立数学模型、抽象数据、选择数据结构、设计算法并编程实现等一系列的过程。你将在模拟解决真实问题的过程中,理解数据在计算机系统内部的组织和存储方式,掌握各种数据结构的概念,理解算法的基本思想以及算法与数据结构的关系,从而进一步提升自己的计算思维。为了让你在学习数据与数据结构的过程中获得更大的成功,请浏览本书的栏目介绍。单元引言、学习目标和单元挑战从生活经验出发引入本单元将要学习的内容,提出本单元学习要达成的学习目标,预告学习完本单元后要接受的单元挑战。项目引言和学习目标描述项
5、目产生的背景和意义,介绍项目学习的主要内容,并提出一些具体问题,引导你带着问题探究。项目学习指引 通过剖析真实的项目实施过程,帮助你了解学科思想方法,理解相关概念,掌握具体技能。写给学生的话解释一些重要概念和术语,或提示相关知识和技术,帮助你抓住重点,扫除认知障碍。提出若干问题引导你对技术背后的原理以及人、信息技术与社会的关系等进行思考和讨论。引导你利用网络、数字化工具和数字资源进行学习。提出活动任务,并引导你运用所学知识,使用信息技术工具进行探究、总结和展示。系统整理和归纳本项目的知识要点,方便你学习。补充更丰富的阅读材料,开阔你的视野。布置面向真实情境的项目任务,希望你综合运用本单元所学的
6、知识与技能去解决问题。用思维导图可视化呈现本单元的知识脉络,提供基于学科核心素养的评价表,为你的学习表现进行自我评价。在学习过程中,希望你勤实践体验、多思考讨论,借助各种数字化工具、资源进行学习与创新,不仅要理解和掌握具体的信息技术知识与技能,还要把握用信息技术解决问题的思想方法,并思考将信息技术应用于社会时所引发的各种挑战,以开放、包容的心态与信息技术、信息社会一起进步。编 者拓展阅读知识链接活 动数字化学习?思考与讨论?核心概念和小贴士单元挑战单元小结第一单元 走进数据时代 1项目一 气象数据及其应用认识数据的价值 21.从气象数据采集到天气预报 32.气象数据在社会各领域中的应用 53.
7、气象数据,走向未来 84.数据时代的机遇和挑战 9知识链接 11单元挑战 完成网上购物数据初步分析 14单元小结 15第二单元 初识数据结构17项目二 研究学校教学管理相关数据的组织处理初识数据结构 181.从教学管理相关数据认识数据的逻辑结构 192.了解教学管理相关数据的存储结构 213.了解数据类型和抽象数据类型 23知识链接 26项目三 探索商品基本信息表的实现线性表的应用 311.问题分析 322.设计算法 333.程序实现 37知识链接 39单元挑战 实现学校学生健康情况登记表的操作 43单元小结 44第三单元 特殊的线性表47项目四 探索电子排队预订功能的实现队列的应用 481.
8、分析问题 492.设计算法 503.程序实现 52知识链接 53项目五 模拟实现软件的撤消功能栈的应用 551.分析问题 562.设计算法 57目 录3.程序实现 58知识链接 59项目六 探究文本字符的处理字符串的操作 611.实现文本字符的编辑 622.实现文本的查找 643.模拟实现文本函数的功能 66知识链接 68单元挑战 按解密规则提取情报 71单元小结 72第四单元 二叉树75项目七 探究计算机中算术表达式的计算了解二叉树及其基本操作 761.探究计算机中算术表达式的计算原理 772.探究为何二叉树能将算术表达式转换为后缀表达式 783.构建二叉树 81知识链接 82单元挑战 使用
9、二叉树解简单背包问题 85单元小结 86第五单元 排序与查找87项目八 模拟实现商品排序常用排序算法及其比较 881.尝试使用插入排序法实现商品销量排序 892.尝试使用冒泡排序法实现商品销量排序 923.尝试使用选择排序法实现商品销量排序 944.比较三种排序方法 96知识链接 96项目九 实现查找指定商品查找算法的应用及数据结构的选择 991.采用顺序查找法查找商品 1002.体验使用二分查找法查找商品 1013.采用索引查找法查找商品 1054.分析查找算法与数据结构的关系 106知识链接 107单元挑战 使用二叉查找树查找学生成绩信息 111单元小结 112附录 部分名词术语中英文对照
10、 114学习目标完成网上购物数据初步分析单元挑战近年来,随着我国信息化工作的全面推进,以及智能感知技术、计算机技术、网络技术、云计算等信息技术的发展,数据的采集、传输、存储和处理等环节都发生了重大变化。如今各种观探测设备、实验设备、视频监控,如卫星、雷达、天文望远镜、粒子加速器、环境监测系统都装备了智能系统,实现了数据的自动存储和传输,产生了大量数据。智能手机、智能可穿戴设备、物联网,以及社交网络将人的一切“行为”自动记录下来,产生无数的“行为数据”。总之,随着智能技术和网络技术的发展,数据规模发生爆炸性的增长,人类迅速进入数据时代。如何做好海量数据的规范化存储管理、高时效分析运用,同时做好数
11、据安全工作,是数据时代我们所面临的挑战。本单元将带领大家一起走进数据世界,感受数据的价值、数据管理分析和利用的意义,探讨迎接数据时代需要做好的准备。理解数字、数值和数据的基本含义。感受数据对人们日常生活、社会经济发展、科学发现与技术进步的影响。认识数据作为新的原材料、生产资料和基础设施的价值与意义。第一单元 走进数据时代项目学习目标本项目将带领大家通过认识气象预报中各种形式的数据来理解数据的基本含义;通过气象预报对人民日常生活的作用,对政府的决策支持作用,对各行各业生产和发展的影响,来感受数据的价值以及数据管理分析的重大意义。完成本项目学习,须回答以下问题:1.什么是数字、数值和数据,它们有何
12、区别?随着信息技术的发展,“数据”的内涵和外延有何变化?2.气象数据有哪些方面的应用?有怎样的价值?3.数据的开放共享有什么意义?如何迎接数据时代的挑战?气象信息在保障人民群众生产生活和国民经济发展,促进生态环境保护中的作用日益显著。随着我国气象信息化事业的不断发展,气象领域积累了大量的数据,激增的数据背后隐藏着许多重要的信息。要充分利用这些数据并从中发现有用的信息,推动气象学科的发展和进步,为人民生活提供及时的个性化气象服务,为社会生产提供专业化的气象服务(图 1-1),为做好防灾减灾等公共安全预警和应急处置等提供决策支持,需要气象学家、计算机工程师以及其他相关职能部门的通力合作。项目一气象
13、数据及其应用认识数据的价值图 1-1 气象服务社会3核心概念数据(data)是对客观事物属性的描述,是记录下的某种可以识别的符号。在计算机科学中,数据是指所有能输入到计算机中并被计算机程序处理的符号的总称。数据承载着信息,把采集到的数据进行加工、分析,可以产生信息。小贴士数值天气预报是目前全世界广泛应用的一种天气预报方法。它根据描述大气运动规律的气体实验定律、水汽守恒定律和热力学能量守恒定律等多个物理定律建立方程组,确定某个时刻大气的初始状态和边界条件后,通过数学方法求解,计算出未来某个时间大气的状态,就是通常所说的天气形势及有关的气象要素如温度、风、降水、辐照度等。项目学习指引1.从气象数据
14、采集到天气预报常言道:“天有不测之风云。”预测天气是一件很难的事。到 19 世纪中叶,基于近代科学的天气预报方法才正式确立。20 世纪中叶,随着计算机技术的发展,世界各国相继采用了数值天气预报方法,预报的准确度得到了极大的提高。图 1-2 所示天气预报信息中,28.1、999.9hPa、0.9m/s、87%、0.1mm、34 级,我们把它们称为数据,28.1、999.9、0.9、87、0.1 称为数值,组成数值的 0、1、2、39 称为数字。气象要素(温度)、数值(28.1)、单位摄氏度(),一起构成了温度这个数据。天气预报是怎么制作出来的?实际上,天气不仅受到各种气团的影响,还受到当地地形、
15、水域状况等众多因素的影响,任何随机的因素变化都可能引起意想不到的天气变化。看似简单的天气预报信息,其背后都有非常庞杂的数据采集作支撑。从简单的温湿度计到复杂的能见度仪,从蓝天中的探空气球到大海上的浮标站,从矗立在地面的天气雷达到游弋于太空的气象卫星,各种各样的气象观测手段织成一张精密的大网,忠实记录着气象数据,如下页图 1-3 所示。我们每日接收到的天气预报信息,就是由如此庞杂的数据,再加上欧亚甚至全球的所有气象数据,通过筛选、运算、分析等一系列复杂的工作流程得到的。随着预报业务的不断发展,这些数据将更加精准,数量也将继续增加。图 1-2 常规天气预报信息第一单元 走进数据时代4 数据与数据结
16、构近年来,随着气象部门观探测能力的不断提升,以及对气象数据的处理能力和可视化能力不断增强,气象部门向公众提供的预报信息越来越精细准确、生动形象,大大提高了气象服务的质量,如图 1-4 所示。图 1-3 全球观测系统图 1-4 台风路径概率预报图小贴士随着信息技术的发展,计算机系统不仅可以处理数值、文本,还可以处理声音、图形、图像、视频等类型的数据。第一单元 走进数据时代5参见 P11 知识链接“数据及其价值”活 动1.1 竺可桢是我国当代著名的气象学家和地理学家,是物候学发展的推动者。(1)收集资料,了解他组建早期中国气象观测网的经历,思考他对我国气象科学发展的贡献。(2)读他的大自然的语言,
17、了解物候观测的内容。思考并讨论:既然可以通过仪器设备采集气象数据,他为什么还要数十年如一日坚持开展物候观察和记录?1.2 登录中央气象台或中国气象局网站,了解中央气象台或中国气象局向公众提供哪些形式和内容的气象服务。1.3 收集资料,了解动态气象预报产品是如何制作的,在班级里向其他同学作介绍。1.4 举例说明随着信息技术的发展,“数据”的内涵有了哪些变化。2.气象数据在社会各领域中的应用随着社会经济的发展和人民生活水平的提高,社会公众、各行各业和国家防灾减灾部门对气象服务的需求日益增长,对天气预报的准确率、精细化程度和预报时效等提出新的、更高的要求。气象部门则充分利用气象观探测数据,提供更好的
18、信息服务和决策参考。(1)人们日常生活随着生活水平的提高,人们越来越注重生活质量,需要更多更方便的渠道获取更详细、更准确、更及时、更个性化的天气气象信息。为了更好地满足这种需求,除了常规天气预报信息外,现在气象部门还对各种气象数据进行综合分析,提供多种预报服务,如图 1-5 所示。小贴士生活气象指数预报是气象部门根据公众普遍关心的生产生活问题和各行各业工作性质对气象敏感度的不同要求,引进数学统计方法,对气压、气温、空气湿度等多种气象要素进行计算而得出的量化预测指标。这些指数是对天气预报的进一步深化。图 1-5 生活气象指数6 数据与数据结构气象观测数据服务海洋石油工程海洋石油工程作业对安全保障
19、有极高要求。当出现台风、大风、海雾、强对流天气时,海洋石油平台对准确精细的天气预报服务有着强烈需求,工程作业船迫切需要关于所在区域海上灾害性天气的针对性预警。截至 2016 年底,气象部门已经建设并纳入业务运行的有 373 个海岛自动气象站、41 个锚锭浮标自动气象站(图1-6)、52 个船载自动气象站、46 个塔台自动气象站和 35 个海上石油平台自动气象站。中国海洋石油集团有限公司也在 16 个平台安装了风、浪、流水文综合观测系统,设法满足企业对海上作业精细化气象保障和海上气象观测资料的需求。气象数据助力农业经济发展农业生产的每个环节都与天气、气候条件密切相关,我国气象部门一直把为农业服务
20、作为基本业务(图 1-7)。气象部门要做到:为农业部门及广大农民提供旱、涝、低温、霜冻等灾害性天气的长、中、短期预报,提示农民在气象灾害到来之前做好防灾准备;利用卫星遥感和地面农业气象网数据,提供作物长势、灾情、土壤水分、天气气候条件等农业气象监测和预测信息,并分析气象条件利弊,提出趋利避害的农业生产管理建议;根据作物长势、面积及气象条件,进行农作物产量预报,定期向国家及各省市提供预报结果,从而为农业经济发展助力。活 动1.5 每个生活气象指数的计算需要选择影响因子进行数学建模,再通过计算得出结论。收集资料,了解“中暑指数”“晨练指数”“感冒指数”分别选用哪些气象数据作为影响因子。和同伴探讨交
21、流:这些生活气象指数的计算合理吗?(2)国民经济建设我国正处在全面建设更高水平小康社会的重要历史时期,气象服务在国民经济各行各业发展中的作用越来越重要。气象观探测数据一直在为农业、交通、航空、航天、水利、环境、电信、电力和能源等行业提供决策参考。图 1-6 回收海洋气象观测浮标图 1-7 农业气象观测站第一单元 走进数据时代7气象数据为青藏铁路提供决策参考青藏铁路沿线平均海拔在 4000 米以上,闪电、雷暴、风雪和冰雹等灾害性天气事件时常发生(图 1-8)。这些恶劣天气直接加大了青藏铁路沿线的供电隐患。为了保证青藏铁路的正常、安全供电,气象部门专门为用户加工处理了青藏铁路沿线各气象站多年来关于
22、闪电、雷暴、雪冰雹等非常规气象的资料,形成专题数据集,为制定沿线冻土及融冻地区对输变电工程的接地要求、变电所的防雷标准、沿线多雷区输电线路的耐雷水平和雷击跳闸率等开展专项服务,确保了青藏铁路供电系统的可靠性。(3)科学发现与技术创新气象观测数据和信息是开展天气预警预报、气候预测预估及各类气象服务、科学研究的基础,是推动气象科学发展的原动力。GRAPES“隔空指挥”风云四号加密观测2018 年第 10 号台风“安比”于 7 月 22 日 12 时 30 分前后在上海登陆后,一路北上,数天内给华东、华北及东北地区带来较大风雨影响。在这次对台风“安比”的路径及风雨预报中,一种创新性的方法首次启用,即
23、 GRAPES 数值预报系统“隔空指挥”风云四号气象卫星(图 1-9)在特定区域内开展加密观测,回传数据实时进入 GRAPES 系统,最终成功改善了对台风“安比”的预报。根据评估,风云四号卫星与 GRAPES 进行配合,24 小时加密观测为精准预报台风“安比”的风雨影响提供了重要定量预报产品 支 撑,最 终 成功提高了目标区域内的预报效果。通过登录中国气象局等专业网站,了解我国风云卫星的发展历史,思考卫星数据对提高气象预报的准确性和预报时长的积极作用,感受我国在气象科学技术方面的成就。数字化学习图 1-8 青藏铁路沿线气候多变图 1-9 风云四号气象卫星8 数据与数据结构3.气象数据,走向未来
24、近年来,随着人们对“数据是国家基础性战略资源”认识的不断加深,随着我国智慧化城市建设推进过程中对来自各行各业数据资源“融合应用”需求的加大,数据的开放共享工作被推上了快车道。“中国气象数据网”已被建成为气象数据汇集应用的权威大数据平台和中国气象局对外提供气象数据服务的官方门户网站,面向社会和公众提供气象数据服务(图 1-10)。2018 年 1 月,我国首个全球实时海洋观测网正式建成,中国因此成为 9 个有能力向全球 Argo(Array for real-time geostrophic oceanography,地转海洋学实时观测阵)资料中心业务化提交浮标观测资料的国家之一,帮助科学家同步
25、获取全球海洋环境资料。气象数据的开放、共享,激发了社会公众、企事业单位、科研机构从海量数据中创造新价值、提升新能力、形成新业态和发现新知识的热情和行动。基于共享的气象数据,一些瞄准“新零售”业的企业,将天气大数据与物流、仓储、营销管理等信息进行融合分析,从而提高企业的产能,减小和规避气象因素造成的风险。气象数据的开放还有效支撑了环境、国土、水利、农业、林业、海洋、国防和商业等各个领域的业务发展,促进了各行各业对气象数据的应用价值和效益的共同挖掘。图 1-10 气象数据共享第一单元 走进数据时代9活 动1.6 登录“中国气象数据网”(国家气象科学数据中心官网),了解其主要提供哪些数据内容和形式的
26、数据服务。1.7 登录“中国气象数据网”下方的相关链接,调研其他数字共享中心。共享的数据种类提供的数据产品专题数据服务国家气象科学数据中心国家农业科学数据共享中心地震科学数据共享中心1.8 收集资料,跟踪了解我国有关大数据发展的政策文件、大数据技术的发展前沿,以及大数据技术应用的相关案例,尝试在学校校园新闻中设立“大数据快讯”栏目。开放数据创新应用大赛(SODA)-2017-未来之星奖“航延预报基于航延预测模型优化乘客航空出行选择”项目获 2017 年 SODA 未来之星奖,它的特点是让航班延误预测像天气预报一样简单。它主要基于气象数据、航班数据、机场流量数据等跟航班延误相关的大数据处理,引入
27、深度学习、机器学习等技术建立航班延误预测模型,通过不同模型的综合运算及分析,得到较为理想的航班延误预测结果。航延预报可成为类似天气预报的便民应用,乘客可以便捷地使用网站、APP 等获取航班延误预测信息,理性选择出行航班及时间。保险公司可以根据航班延误预测模型设计航延险产品,由传统航延险的事后损失补偿理念升级为事前风险预警。航空公司也可以参考航班延误预测情况,合理调配运力,缓解旅客滞留情况。4.数据时代的机遇和挑战数据,已经渗透到当今每一个行业和生活的方方面面,正在改变人们的生活、工作和思维方式。数据被认为是一种新的原材料,可以用来加工、产生价值;是一种新的生产资料,可以提高生产的效率;是一种新
28、10 数据与数据结构活 动1.9 阅读图 1-11,结合日常生活中所涉及的数据安全问题,谈谈现代公民应该具备怎样的“数据素养”。参见 P12 知识链接“数据素养”结合前面关于气象数据应用的例子,思考:为什么说数据是一种新的原材料、一种新的生产资料和一种新的基础设施??思考与讨论?的基础设施,投资和利用它可以改善经济和民生。数据时代在给人类带来福音的同时,也对人类驾驭数据的能力发起了一场新的挑战。首先,数据泄露对国家安全、组织机密和个人隐私保护等方面都构成巨大挑战,如何在利用数据价值的同时,保证数据安全,成了国家、企事业单位和个人不得不面对的难题。其次,数据已渗透到每一个行业和业务职能领域。无论
29、是数据的采集、高效存储和管理,还是对数据的有效挖掘、可视化展示和创造性应用,都需要具备数据素养的人才。作为一名高中生,我们要努力掌握一定的数据科学基础知识,提高数据素养,从容投身于数据时代。图 1-11 数据安全报告第一单元 走进数据时代11知识链接数据及其价值数据是计算机加工的基本对象,是现实世界中各种事物和现象的抽象化和符号化。伴随着信息技术的发展,计算机可处理的数据类型越来越多,现代计算机处理的不再是单纯的数值型数据,更多的是文本、图形、图像、音频、视频等非数值型数据。数据是事物属性的刻画,反映出事物的信息。通过对数据的挖掘,可以发现数据里面所隐藏的各种信息,找到数据规律并挖掘出所隐含的
30、自然或社会规律。因此,信息技术的高速发展所带来的海量数据和信息量无疑是一座重要的宝库。从移动支付到共享经济,大数据正在加速重塑大众生活的诸多方面;从万物互联到智慧城市,大数据正在深刻影响着经济发展、社会治理、国家管理的各个领域。上海全面推广“健康云”,病历和就诊数据汇集“上云”,就诊记录一键查询,转诊信息顺畅共享;重庆江北区智慧城管系统为路灯、排水管网、环卫车等加装智能设备,采集到的运行状态数据由“智慧城管”进行精细的分析处理;全国多地交管部门联合高德地图,借助大数据分析技术为春运“摩托大军”提供最佳返乡路线、个性化路况提示,让春运更有“温度”;全国首个旅游大数据公共服务平台“杭州旅游数据在线
31、”上线,游客通过手机便可了解景点实时拥堵度、酒店好评率等信息 大量用户数据与信息催生了一系列消费者行为的研究与分析。企业利用用户数据可以给用户画像,对用户进行细分,精准感知用户的需求,从而基于数据优化产品设计,为用户提供更好的服务。制造业通过工业大数据与自动控制和感知硬件、工业核心软件、智能服务平台等融合发展,形成数据驱动的工业发展新模式,对每个产品从生产、销售到用户使用环节的数据采集、分析和应用,提高生产效率、减少库存、延伸产业链。在科学研究领域,科学数据的采集、传输、存储和处理等环节都发生了重大变化。如今各种观测、实验设备都装备了智能系统,实现了数据的智能采集和管理。特别是数据可以实现远程
32、共享。有专家提出,数据规模及其采集方式的不同,让数据挖掘成了科学发现的一种重要工具。“在 21 世纪,人们通过各种新工具不间断地采集着海量的科学数据,也通过计算机模型产生着大量的信息,其中大部分已经长期存储在各种在线的、可以公共获取的、得到有效管理的系统上,可以支持持续的分析,这些分析将引发许许多多新理论的发现。”跨行业、跨领域数据的开放共享、综合利用和协同创新,给基于数据解决社会问题带来了新的希望。如通过分析气象报告、潮汐相位、地理空间、卫星图像等海量数据,优化风力发电机的布局,合理进行电力系统调度、提高风力发电效率,确保电力系统运行稳定;通过手机信令数据和呼吸道传染疾病医疗数据,分析该疾病
33、暴发的时间、地点以及传播模型,为该病的预防和控制服务。12 数据与数据结构全球海洋观测平台既有锚锭浮标、志愿观测船、石油平台等海表观测,也有剖面浮标(Argo)、深海潜标等深海观测;观测要素丰富,既包含常规的风、温、压、湿气象要素,也包让“沉睡”的海洋观测资料活起来随着数据成为国家的战略资源、企业的核心资产,同时对个人也越来越重要,数据也成为违法犯罪分子的重点关注目标,数据安全问题受到全世界从政府到普通公众的重视。此外,规模庞大的数据中心在成为全球强大的经济引擎的同时,也消耗了巨大的能量。数据中心绿色建设、高效运营已是迫在眉睫的任务。数据素养在数据公开、数据交换、数据共享和数据利用成为时代特征
34、时,不论是政府机构、企业还是个人,都在创造数据、管理数据和使用数据,数据素养的重要意义和价值日益凸显,并迅速引起学界关注。国内关于数据素养并未形成统一的概念定义。有专家认为数据素养通常指的是研究者在工作中对科学数据的采集、组织管理、处理分析、共享等过程中应具备的能力,还应包括研究者在数据生命周期中普遍遵循的道德与行为规范;也有专家认为数据素养包括三个层次:数据意识、数据基本知识与技能、数据利用能力等。综合已有研究,数据素养应包括对数据的敏感性,数据收集、处理、分析、判断和利用的能力,尊重数据伦理、保证数据准确、安全和隐私的修养。数据素养与信息素养概念密切相关,数据信息素养是信息素养的深化与拓展
35、。每个公民只有具备必要的数据素养,才能紧跟社会发展的步伐。拓展阅读智慧城市在城市大发展中有两大功能,一是解决城市已经客观存在的“不健康”问题,二是提供让城市更舒适、更宜居的服务。智慧城市建设是利用信息技术,不断获取、活化和分析城市中的多种异构数据,从而解决城市所面临的各种挑战,如环境恶化、交通拥堵、能耗增加、规划落后等。智慧城市将无处不在的感知技术、高效的数据管理和分析算法,以及新颖的可视化技术相结合,以提高人们的生活品质、环境质量和城市运转效率。如果将城市虚拟为一个“人”,那么采集城市感知数据的过程,就像为城市做全面的体检,将城市中的人口、交通、规划、能源、经济、环境等诸多信息详细地展示出来
36、,为保障城市的健康发展以及“城市病”的及时、准确诊断提供了丰富的素材。在综合应用城市多源数据的基础上,机器学习、数据挖掘、大数据分析等计算机信息技术,可以在城市领域知识的指导下,深入挖掘并理解城市各种“不健康”问题的成因与机理,从而提出科学合理的调整方案。大数据与计算机技术同城市科学领域的专业知识相结合,是智慧城市走向科学的基础。摘自国家治理2015 年 18 期以信息技术服务业推动智慧城市建设智慧城市建设需要“数据活化”第一单元 走进数据时代13括海温、海浪、海流、盐度等水文要素。据国际海洋学与海洋气象学联合委员会(JCOMM)统计,2015 年业务运行的全球海洋观测平台有 8500 余个,
37、这些观测资料通过世界气象组织全球通信系统(GTS)实现全球各大业务中心共享。长期以来,大部分资料都在资料库中“沉睡”,并没有被挖掘整理并应用于全球海洋监测业务中。2015 年中国气象局、国家气象信息中心,组建海洋气象观测资料搜集整理小组。通过对目前信息中心资料库的海洋气象观测数据进行分门别类,共整理出漂流浮标、剖面浮标、波浪浮标、潮位站、石油平台站、海啸浮标、志愿船观测、潜标、锚锭浮标共九大类 8000 余个观测站,收集整理上述观测站的元信息数据,将成果通过“全球海洋气象共享系统”实现共享,方便了下游用户使用。在此基础上,进一步与国内锚锭浮标、海岛站、石油平台站、船舶站等观测数据整合,有效提升
38、全球海洋气象监测能力,推进了我国海洋气象观测资料应用水平。摘自中国海洋网14 数据与数据结构一、项目任务张女士在某网上书店为自己买了一本优雅女人的投资理财,给 6 岁女儿买了一本写给儿童的成语故事。张女士此次购买数据信息被商家共享给了合作伙伴,被共享的数据为:(1)张女士对书籍感兴趣;(2)她家有个孩子;(3)她是通过网络购买的;(4)她通过网络看到广告;(5)住在上海;(6)通过对上面初步记录的数据进行分析可推测:(1)张女士可能会购买理财产品;(2)张女士可能会购买健身会所的会员卡;(3)张女士可能会为女儿报兴趣班;(4)1.分小组讨论,为上述案例再添加一条被共享的数据和推测结果。2.请将
39、本案例中有可能涉及张女士个人隐私的信息(至少三条)列在下表中。序号可能的隐私信息12343.某购物平台内部有一个专门的数据安全小组,负责监管隐私问题,如要查某年用户有多少,数据查询结果不会显示个人的全部身份证号码;在对外合作中,提供脱敏的数据,即只告诉数据分析运算的结果,而不提供元数据。结合本案例,列出大数据存在哪些风险,分享你或你们小组关于如何有效保护数据隐私权的建议。二、项目指引1.从自己或身边人的生活体验中,了解网上购物的过程。2.了解在网上购物的过程中会产生的数据。3.收集身边或媒体关于个人隐私泄密的案例。三、交流评价与反思以自己熟悉的信息表达工具(如演示文稿等)制作电子作品,通过网络
40、或课堂展示交流分析结果,并对他人的作品进行评价,谈谈数据的应用价值和负面影响。单元挑战 完成网上购物数据初步分析第一单元 走进数据时代15一、主要内容梳理二、单元练习1.当气温降到 16时,短大衣开始畅销;气温降到 10时,长大衣开始畅销;某啤酒商发现,夏季气温每上升 1,啤酒销量就会增加 230 万瓶。以上案例说明,气象数据可以是预测生产流通和消费的风向标,反映了气温变化与销售额增减的关系。请从身边寻找相关气象数据,分析该数据与社会某些领域的关系。2.有些创新企业的生产原材料就是数据,通过技术手段将收集到的数据加工,进行数据分析,生产出形形色色的“数据产品”,从而获得收益。某订餐网站的外卖时
41、段占比和订单量占比,如图 1-12 和图 1-13 所示。请从图中分析,这些数据可以给企业提供哪些方面的决策参考。单元小结图 1-12 外卖时段占比16 数据与数据结构说明:A信息意识,T计算思维,I数字化学习与创新,R信息社会责任三、单元评价评 价 内 容达 成 情 况能说出数字、数值和数据的涵义及它们的区别(T)能列举气象数据在人们日常生活中的应用(A)能列举气象数据在国民经济建设中的应用(A)能列举气象数据在科学发现和技术进步中的应用(A,I,R)能理解数据开放共享的意义(A,R)能洞悉数据时代的机遇和挑战(A,R)能养成良好的数据素养(A,R)能理解数据是一种新的原材料,一种新的生产资
42、料和一种新的基础设施(A,R)3.汽车生产企业的产业全过程都与数据密不可分,这些数据让其在开发新车和开拓市场的核心业务上能够及时采取相应的行动并获益。查阅资料,请从市场角度说明可以收集哪些数据,为汽车生产企业的新车研发提供依据。图 1-13 订单量占比学习目标实现学校学生健康情况登记表的操作单元挑战随着信息技术的不断发展,计算机的应用越来越广泛,已经从最初的科学计算发展到数据处理、自动控制、办公自动化、人工智能等许多非数值计算领域。计算机加工处理的对象也从纯粹的数值发展到字符、表格、图片等各种具有一定结构的数据。为了对大量数据进行高效处理,必须要先分析数据的内在联系,合理地组织、存储数据,然后
43、设计算法编写程序实现相关处理。而如何合理地组织、存储数据就是“数据结构”主要研究的问题。本单元将从实例出发,学习数据结构的基本概念,初步认识数据结构在问题解决中的重要作用,进一步提升计算思维。理解数据结构的概念,认识数据结构在解决问题过程中的重要作用。理解线性表数据结构的概念,并能编程实现其相关操作。比较数组和链表的区别,明确上述两种数据结构在存储不同类型数据中的应用。理解抽象数据类型的概念,认识抽象数据类型对数据处理的重要性。第二单元 初识数据结构项目学习目标在本项目中,我们将一起通过研究学校教学管理相关数据的组织处理来初步认识数据结构。完成本项目学习,须回答以下问题:1.学生基本数据之间有
44、何种内在关系,处理这些数据的时候可以如何存储?2.班级管理组织结构属于何种逻辑结构?3.什么是数据对象、数据元素和数据项?4.什么是数据结构?数据结构在解决问题过程中有何作用?5.什么是抽象数据类型?抽象数据类型的作用是什么?随着学校管理信息化的不断发展,使用计算机进行教学管理逐步成为常态。学校教学管理涉及许多方面的数据,如学生数据、教职员工数据等。如果要用计算机处理这些数据,就要先分析它们各自的内在关系(图 2-1),然后采用相应的存储方式将这些数据存储到计算机中,在此基础上进行数据的相关操作,如查找、插入、删除、合并等,以实现管理需求。项目二研究学校教学管理相关数据的组织处理初识数据结构图
45、 2-1 分析数据内在关系19小贴士数据元素(data element)是数据的基本单位。一个数据元素由若干个数据项组成。在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。数据项(data item)是组成数据元素的最小单位(也可称为字段、域、属性)。数据对象(data object)是性质相同的数据元素的集合。逻辑结构是指数据元素之间的相互关系。参见 P26 知识链接“基本概念术语”项目学习指引1.从教学管理相关数据认识数据的逻辑结构学校为了对学生进行管理,每年新生入校都要登记注册各种信息,诸如姓名、性别、出生日期、家庭地址等。学校要为每位新生分配班级学号。中途学生转学转班,学校要删
46、除或修改学生信息。学生的基本情况,可以用学校编制的“学生信息表”表示,如表 2-1 所示。学号姓名性别出生日期20140111杨阳男1998.1020140112卢声凯男1999.0320140113林德康男1999.0120140114王诗萌女1999.0720140115冯子晗女1999.04表 2-1 某学校学生信息表表中的每一行构成一个学生的一条信息,包括学号、姓名、性别、出生日期等。可以看出,除第一个和最后一个学生外,每个学生都分别与前一个学生和后一个学生相邻,形成一对一的关系。这张按一定顺序排列的表,就是解决学生管理问题的模型(线性表,将在后续项目详细展开介绍)。当学生信息被输入计
47、算机后,就成为计算机处理的对象。表中每一行代表一条学生基本数据,称为数据元素,它由学号、姓名、性别、出生日期等组成,其中的每一项称为数据项。所有各条学生基本数据一起构成一个集合(学生基本数据表),称为数据对象。数据元素之间存在一对一的关系的逻辑结构称为线性结构。生活中还有很多这样的例子,如员工管理系统、订票系统等。在这类问题中,一个共同特点是所处理的对象之间存在简单的一对一的线性关系。基于此,可以获得解决该类问题的数学模型。通过设计算法,计算机能够完成对这些数据小贴士数学模型是指,从实际问题中提取操作对象,并找出这些操作对象之间的关系,然后用数学语言做出描述。有些问题的数学模型可以用具体的数学
48、方程表示,更多的实际问题无法用数学方程表示,这就需要对数据进行分析得到解决问题的方法。数据的逻辑结构也是从具体问题抽象出来的数学模型。第二单元 初识数据结构20 数据与数据结构参见 P27 知识链接“逻辑结构”核心概念数据结构(data structure)是相互之间存在一种或多种特定关系的数据元素的集合,涉及逻辑结构、存储结构及运算(操作)三个方面。活 动2.1 请列举生活中其他常见的线性结构。2.2 请了解本校学科教学管理的组织结构,并画出结构图。2.3 在计算机和人下井字棋的游戏中,计算机操作的对象是对弈过程中可能出现的棋盘状态,称为格局,每下一步产生的格局都可以派生出多个格局(下一步的
49、可能走法),请以图 2-3 为当前格局画出后续所有的格局关系图,说说该图所示的是一种什么逻辑结构,为什么?元素查找、插入和删除等操作。这就是一类数据结构线性数据结构。除了学科教学工作外,学校还有许多教学管理工作。为了提高管理效率,须按照一定的工作任务和目标,将成员按不同的工作性质、职务、岗位组合起来,形成层次恰当、结构合理的有机整体。以班级管理为例,一般学校都设有如图2-2 所示的组织管理结构:图 2-2 班级管理组织结构示例其中,校长(分管校长)领导各年级组长,各年级组长分别领导本年级各班班主任。他们之间存在着一对多的关系,所构成的逻辑结构称为树形结构。逻辑结构为树形结构的数据结构属于非线性
50、数据结构。小贴士学生管理、班级管理等问题属于非数值计算问题。图 2-3 井字棋,格局第二单元 初识数据结构21参见 P27 知识链接“顺序存储结构”2.了解教学管理相关数据的存储结构上述学生信息表存储到计算机内时,不仅要存储每一条学生基本数据,还要借助它们在存储器中的相对位置来表示线性关系。表 2-2 所示的是学生信息表的一种存储结构。小贴士存储结构是指数据的逻辑结构在计算机中的表示,也称为物理结构。表 2-2“某学校学生基本数据”存储结构(一)假设存储地址为一个十进制数(实际存储地址是一串二进制数),首地址为 200,每条学生基本数据占用 30 个存储单元(一个存储单元的大小为一个字节),即
51、一条数据的存储空间大小为 30 个字节。从图中看到数据元素是按照学生信息表中的顺序依次存储在地址连续的存储空间中的,一对一的逻辑关系从存储位置的前后顺序能直接反映出来。如第一个学生杨阳的数据存储在地址为 200 的存储空间内,它后续的卢声凯的数据就存储在地址为 230 的存储空间内,以此类推,依次由低地址向高地址存储,直到存储好最后一个数据元素。存储地址某学校学生基本数据20020140111杨阳男1998.1023020140112卢声凯男1999.0326020140113林德康男1999.0129020140114王诗萌女1999.0732020140115冯子晗女1999.04除了顺序
52、存储结构外,还可以用其他方式来存储数据元素。假定给数据元素(每条学生记录)附加一个后继结点的地址,用于存放下一个数据元素的存储地址,则可得到表2-3 所示的存储结构。如果存储地址不连续,是否能表示线性关系??思考与讨论?22 数据与数据结构在这种存储方式下,数据元素的存储地址可以是连续的,也可以是不连续的。每个存储空间存储了数据元素(称为数据域)和后继结点(下一个数据元素)的存储地址(称为指针域),地址 0 表示结束。这一存储方式也可以用图 2-4表示。这种存储结构称为链式存储结构。表 2-3“某学校学生基本数据”存储结构(二)地址某学校学生基本数据后继结点的地址10020140111杨阳男1
53、998.1035015020140115冯子晗女1999.04021020140114王诗萌女1999.0715035020140112卢声凯男1999.0350050020140113林德康男1999.01210明确了学生基本数据的逻辑结构和存储结构之后,就可以对其进行操作,如插入、删除、查找等(在后续项目中展开学习)。图 2-4 链式存储结构20140111杨阳男1998.1035020140112卢声凯男1999.0350020140113林德康男1999.0121020140115冯子晗女1999.040参见 P28 知识链接“链式存储结构”链式存储结构是否一定需要从低地址向高地址存储
54、??思考与讨论?第二单元 初识数据结构23活 动2.4 请画出采用顺序存储结构和链式存储结构两种不同的方式存储本班学生信息的示意图。3.了解数据类型和抽象数据类型计算机进行教学管理需要做诸如学生信息的增、删,或学生成绩统计等工作。这些工作完成的前提是要把学生信息或成绩等数据储存在计算机内存中,同时要给出指令,“告诉”计算机针对不同的数据对象“做什么”和“怎么做”。计算机的内存容量是有限的,而做两个个位数的加法或两个位数不同的小数的加法,显然需要的空间大小可以不同。计算机研究者通过对不同数据进行分类的方法数据类型,来描述不同数据的集合,为不同类型的数据分配了大小恰当的内存空间。所有高级语言都定义
55、了一系列的数据类型。以 Python 语言为例,基本数据类型也可以分为:原子类型数字型(numbers,包括整型 int 和实数型float)、字符串型(string)结构类型元组(tuple)、列表(list)、字典(dict)教学管理数据中,班级学生人数是整型,学生成绩是实数型,学生的姓名是字符串型等。顺序存储结构链式存储结构核心概念数据类型是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。参见 P28 知识链接“数据类型”小贴士数据类型用来说明一个数据在数据分类中的归属。它是数据的一种属性。这个属性限定了该数据的变化范围。数据类型是被定义在程序设计语言中的,尽管不同的高级语言所
56、定义的数据类型不尽相同。你还知道教学管理数据中哪些是整型?哪些是实数型?哪些是字符串型??思考与讨论?24 数据与数据结构除了上述基本数据类型外,Python 语言还通过定义类(class)来实现结构类型。例如,用“class student:”就可以定义包含学号、姓名等多个数据项的结构类型。这时,student 就相当于是一种记录类型,student 的变量(一般称对象)就可以存放学生信息数据元素了。数据类型还有一个作用是定义了对数据的一些操作。这些操作在程序设计语言中是直接使用运算符或函数来实现的,如将班级学生人数相加得出年级学生人数,在 Python 中为 T=a1+a2+a3+a4(假
57、设有 4 个班级,每个班级的人数分别为 a1、a2、a3、a4),这就是基于整数类型上的一种操作(加法运算)。计算机编程者在编程时,不需要关心整数在计算机中是如何表示的,计算机是如何分配相应的存储空间,如何实现加法操作的。小贴士抽象是指抽取出事物具有的普遍性的本质。它是抽出问题的特征而忽略非本质的细节。是对具体事物的一个概括。抽象是一种思考问题的方式,它隐藏了繁杂的细节,只保留实现目标所必需的信息。核心概念抽象数据类型(abstract data type,ADT)是指一个数学模型以及定义在此数学模型上的一组操作。事实上,各种计算机,不管是大型机、小型机、PC、平板电脑、PDA,甚至是智能手机
58、都拥有“整数”类型,也需要整数间的运算,实现方法可能有所不同,但在计算机编程者看来,它们都是相同的,原因就在于整数类型定义的数学特性相同。这就是抽象的意义。从这个层面来看,整型其实是一个抽象数据类型。整数型、实数型、字符串型通常定义了哪些操作?你使用过哪些??思考与讨论?当然,抽象数据类型不仅仅指已经定义并实现的数据类型(如整型、字符串型等),还可以是计算机编程者对现实问题进行抽象后,在设计软件程序时自己定义的数据类型。以学生信息管理问题为例,对其进行抽象后,可以得出数据对象是学生信息这一数据元素的集合,此集合中数据元素之间的关系是一对一的线性关系。如果在此数学模型基础上定义插入、删除等一组基
59、本操作,就形成一种抽象数据类型。该抽象数据类型可以如下所示:其他数据类型是抽象数据类型吗?为什么??思考与讨论?第二单元 初识数据结构25ADT List:数据对象:D=ai|ai ElemSet,i=1,2,n,n=0 数据关系:R=|ai-1,ai D,i=2,n 基本操作:def InitList(self)#建立一个空的表 def GetElem(self,i)#返回表的第 i 个元素 def Length(self)#求表的长度 def LocateElem(self,x)#求元素 x 在表中的位置;若不存在 x,则返回 0 def Insert(self,i,x)#在表的第 i 个
60、位置上插入一个新元素 x def Delete(self,i)#删除第 i 个元素数据对象的定义数据关系的定义基本操作的定义抽象数据类型中被定义过的基本操作,是通过编写出相应的程序模块实现的。以后用计算机解决此类问题时,凡是要用到这些基本操作,直接调用这些程序模块即可,而不必每次重新编写程序,大大降低了程序员的重复劳动。例如,将某两个班级的学生数据定义为上述抽象数据类型后,调用其基本操作(如下面代码中框出的部分)就可以实现将两个班学生数据的合并(用 Python 语言编写)。def union(La,Lb):#本函数功能是将表 Lb 合并到表 La 中La_len=Length(La)#求表
61、a 的长度Lb_len=Length(Lb)#求表 b 的长度for i in range(1,Lb_len+1):x=GetElem(Lb,i)#获取表 b 的第 i 个数据元素 if LocateElem(La,x)=0:La_len=La_len+1 La.Insert(La,La_len,x)#将数据元素插入至表 a 中return参见 P29 知识链接“抽象数据类型”;P29 知识链接“抽象数据类型的表示”1.Python 中列表属于抽象数据类型吗?为什么?2.使用抽象数据类型有何好处??思考与讨论?26 数据与数据结构活 动2.5 假定把矩形定义为一种抽象数据类型,其数据部分包括矩
62、形的长度和宽度,操作部分包括初始化矩形的尺寸、求矩形的周长和矩形的面积。请完成矩形的 ADT(抽象数据类型)描述。提示:假定该抽象数据类型名用 Rectangle(矩形)表示,定义矩形长度和宽度的数据用 length 和 width 表示,并假定其类型为浮点(float)型,初始化矩形数据的函数名用 InitRectangle 表示,求矩形周长的函数名用 Circumference(周长)表示,求矩形面积的函数名用 Area(面积)表示。知识链接基本概念术语1.数据数据是对客观事物的描述,是记录下来的某种可以识别的符号,在计算机科学中,数据是指所有能被输入计算机中,且能被计算机处理的符号的集合
63、,是计算机加工处理的对象。这些符号必须具备两个前提:可以输入到计算机中和能被计算机程序处理。例如,学生基本信息输入到计算机中后,可以通过计算机程序进行插入、修改等处理。数据不仅仅包括数值型数据,还包括字符、图像等非数值型数据。2.数据元素数据元素是组成数据的、有一定意义的基本单位,是数据这个集合中的个体,也被称为记录。如表现在“学生基本信息表”中,就是某一学生的一条记录。3.数据项数据项是组成数据元素的、有独立含义的、不可分割的最小单位。例如,“学生基本信息表”中每个学生的学号、姓名、性别等都是数据项。4.数据对象数据对象是性质相同的数据元素的集合,是数据的子集。例如,整数数据对象是集合N=.
64、,-2,-1,0,1,2,.,字母字符数据对象是集合 C=A,B,.,Z,a,b,.z,而学生基本信息表也是一个数据对象。数据结构数据结构是相互之间存在一种或多种特定关系的数据元素的集合,涉及逻辑结构、存储结构及运算(操作)三个方面。第二单元 初识数据结构271.逻辑结构逻辑结构是指数据对象中数据元素之间的相互关系。它与数据的存储无关,是独立于计算机的。数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。根据数据元素之间关系的不同特性,通常有四类基本结构,如图 2-5 所示。它们的复杂程度依次递进。图 2-5 四类基本逻辑结构关系图(1)集合结构。这种结构的数据元素除了同属于一个集合外,它们
65、之间没有其他关系。各个数据元素是“平等”的,它们的共同属性是“同属于一个集合”。例如,一组随机没有规律的数字组成的集合,就是一个集合结构。(2)线性结构。这种结构的数据元素之间是一对一的关系。例如,把学生信息数据按照其入学报到的时间先后顺序进行排列,将构成一个线性关系。(3)树形结构。这种结构的数据元素之间存在一种一对多的关系。例如,在班级的管理体系中,班长管理多个组长,每位组长管理多名组员,从而构成树形结构。(4)图状结构或网状结构。这种结构的数据元素是多对多的关系。例如,若任意两个城市之间有直线或间接的通信线路,就可构成图状结构。其中,树形结构和图状结构属于非线性结构。2.存储结构存储结构
66、是指数据的逻辑结构在计算机中的表示,即数据元素及其之间的关系在计算机中的表示,也称为物理结构。如何反映数据元素之间的逻辑关系,是实现存储结构的重点和难点。数据元素在计算机中有两种最基本的存储结构:顺序存储结构和链式存储结构。数据元素在计算机内可以用一个结点来表示。(1)顺序存储结构。顺序存储结构是把数据元素按顺序存放在地址连续的存储单元中,其数据之间的逻辑关系和存储关系是一致的,即借助数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系。计算机会在内存储器中开辟一段地址连续的存储单元空间依次存放数据,即第一个数据放在第一个位置,第二个数据放在第二个位置如图 2-6 所示,其中 1001,2
67、8 数据与数据结构1002表示存储地址,d1,d2表示数据。由于只要知道了首地址,就可以随机存取任意位置上的数据元素,所以也可以称顺序存储结构为随机存取存储结构。(2)链式存储结构。链式存储结构无须占用一整块存储空间,它把数据元素存放在任意的存储单元中。链式存储结构不要求逻辑上相邻的数据元素在物理位置上也相邻。数据元素之间的关系借助于指针来表示,即给每个数据元素附加一个指针用于存放后继数据元素的存储地址,这样通过这个存储地址就可以找到相关数据元素的位置,如图 2-7 所示。显然,链式存储结构存放数据时要比顺序存储结构灵活,不用关心数据存在哪里,只要有一个相应的存储地址就能找到它了。总之,逻辑结
68、构是面向问题的,而存储结构是面向计算机的,其目的是将数据及其逻辑关系存储到计算机内存中。3.运算数据的运算也称为操作,主要包括对数据进行删除、插入、访问、修改和查找等。数据结构的作用如今需要用计算机解决大量的非数值计算问题,这些问题通常不能通过列方程、解方程等数学方法求解,而是需要用诸如线性表、树和图之类的数据结构来描述。求解这类问题的做法通常是:(1)从具体问题抽象出一个适当的数学模型;(2)设计一个解此模型的算法;(3)编程并进行调试,直至最终得到解答。其中,抽象出数学模型,其实质是分析问题,从中提取出操作对象,并找出这些操作对象之间的关系,而数据结构正是实际问题中的操作对象以及这些对象间
69、关系的数学抽象。因此,要解决非数值计算问题,必须研究如何合理组织数据,并采用适当的存储结构来存储,才能设计出合理的算法,提升程序的运行和存储效率。这正是数据结构的作用所在。数据类型数据类型是一组性质相同的值的集合及定义在此集合上的一些操作的总称。高级程序1000100110021003d1d2d3d4图 2-6 顺序存储结构示意图1002100010031001100010031001d1d2d3d4图 2-7 链式存储结构示意图第二单元 初识数据结构29设计语言的每一个变量、常量、表达式都有一个所属的确定的数据类型。类型明显或隐含地规定了在程序执行期间变量或表达式所有可能取值的范围,以及在这
70、些值上允许进行的操作。例如,某语言整数类型取值范围-maxint,maxint(maxint 是依赖特定的计算机的最大整数),定义在其上的一组操作为:加、减、乘、除、整除和取模等。按“值”的不同特性,高级程序语言中的数据类型可分为两类:一类是非结构的原子类型,如整型、字符型等,原子类型的值是不可分解的;还有一种是结构类型,是由若干成分按某种结构组成的,因此是可以分解的,并且每个成分可以是非结构的,也可以是结构的。例如,定义一个记录类型,记录包含姓名、性别等。抽象数据类型抽象数据类型是指一个数学模型以及定义在此数学模型上的一组操作。抽象数据类型的定义与其在计算机内部如何表示和实现无关,即只考虑在
71、数据元素集合上能完成什么操作,而不考虑如何完成。例如,前面所说的整数类型,无论加减乘除操作是如何运算的,对于用户来说,这些操作的性质不会变。这就是抽象的意义。抽象数据类型中对数据对象和数据运算进行了声明,对数据对象的表示和数据运算的实现进行了分离。抽象数据类型的两个重要特征:抽象用抽象数据类型描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能,以及它和外部用户的接口。封装将实体的外部特征和内部实现细节分离,并且对外部用户隐藏其内部实现细节。抽象数据类型的表示本书按如下格式表示抽象数据类型:ADT :数据对象:数据关系:基本操作:其中,数据对象和数据关系用集合或自然语言来描述;基本操作
72、用 Python 语句描述,具体格式如下所示:def 基本操作名(参数表)#功能说明例如,有理数抽象数据类型表示如下:30 数据与数据结构ADT Rational:数据对象:D=e1,e2|e1,e2 均为整数 数据关系:R=|e1 是分子,e2 是分母 基本操作:def _init_(self,num,den)#构造有理数 num/dendef _add_(self,v1,v2)#求出有理数 v1+v2 的和def _sub_(self,v1,v2)#求出有理数 v1-v2 的差def _mul_(self,v1,v2)#求出有理数 v1*v2 的积def _div_(self,v1,v2)
73、#求出有理数 v1/v2 的商def num(self,v1)#求得有理数 v1 的分子def den(self,v1)#求得有理数 v1 的分母抽象数据类型把实际生活中的问题分解为多个规模小且容易处理的问题,然后建立一个计算机能处理的数据模型,并把每个功能模块的实现细节作为一个独立的单元,从而使具体实现过程隐蔽起来。因此,抽象数据类型体现了程序设计中问题分离、抽象和信息隐蔽的特性。通常,超市销售的商品品种繁多,每种商品都含有品名、零售价、库存数等多种信息,如表 2-4 所示。为了更好地管理,超市必须保存这些商品信息,还要做到及时更新,如添加、删除和修改商品信息。通常超市都采用数据库来实现管理
74、,而实际编程实现这些数据管理功能时,必须使用有效的数据结构技术来支持各种数据操作的执行。项目三探索商品基本信息表的实现线性表的应用项目学习目标在本项目中,我们将通过小超市某类商品信息表的插入、删除操作的实现,体验线性表的应用。完成本项目学习,须回答以下问题:1.“商品信息表”采用什么数据结构?2.线性表可采用哪些存储结构?分别有什么优缺点?3.如何编程实现线性表数据结构的插入和删除等操作?序号商品条形码编码品名库存数(件)零售价(元)169564162000291.25L 果粒橙80826956416200265450mL 果粒芒果803.5369213111963641L 冰红茶804469
75、213111964941L 绿茶804569248621014672L 百事可乐1006.5669004518930362L 芬达1006.5769004518910322L 可口可乐1006.5表 2-4 商品信息表(简化)32 数据与数据结构小贴士为 了 便 于 理 解,此 处“商品信息表”设定为只包含序号、条形码、品名、库存数、零售价等信息。1.在日常生活中,线性表的例子比比皆是。例如,26 个英文字母的字母表:A,B,C,D,.,Z就是一个线性表。想一想,生活中还有哪些这样的例子?2.上一个项目中给出的抽象数据类型是否适用于商品信息表?为什么??思考与讨论?项目学习指引1.问题分析为了
76、实现使用计算机对超市商品进行管理,需要按照商品的不同分类,建立“商品信息表”,然后通过条码扫描器读取商品条码,录入每一种商品的具体数据。上页的商品信息表中,每一个数据元素有相同的数据项。若将表中的每一个数据元素表示为 商品i (i 为原表中的商品序号),可以得到按原序号顺序排列的序列,如图 2-8所示。核心概念线性表(linear list)是n(n 0)个数据特性相同的元素构成的有限序列。活 动3.1 请尝试写出线性表抽象数据类型的定义。从表中可以看到,各个数据元素(商品)之间存在着一对一的关系,自上而下顺序排列。此表也是线性表。商品1商品2商品3商品4商品5商品6小贴士线性表的特点是存在唯
77、一的一个被称作“第一个”的数据元素;存在唯一的一个被称作“最后一个”的数据元素;除第一个外,结构中每个数据元素只有一个前驱;除最后一个外,结构中每个数据元素只有一个后继。参见 P39 知识链接“线性表”图 2-8 顺序排列的数据元素第二单元 初识数据结构33图 2-9 数组商品1商品2商品3商品4s0s1s2s3参见 P 知识链接“队列”3.2 请分析以下生活中的案例,判断哪个是线性表。(1)公司的组织结构表:总经理管理数名总监,每个总监管理数名经理,每个经理都有各自的下属和员工。(2)学生信息表,如表 2-5 所示。表 2-5 学生信息表学号姓名性别出生年月家庭地址1张一帆男2001.3东街
78、西巷 1 号 203 室2李小红女2001.8南大北路 4 弄 5 号 6 室3.3 下面哪些事物的相关信息适合用线性表存储和管理,为什么?(1)在银行排队等候服务的顾客;(2)书架上的一排书籍;(3)计算机桌面上的各种图标及其相关信息;(4)计算机的文件和文件夹;(5)个人的电话簿;(6)一辆汽车的所有部件和零件。2.设计算法“商品信息表”线性表不能被计算机直接处理,需要为它选择合适的存储结构,然后设计算法编程实现相关功能,如插入一条商品信息或者删除一条商品信息等。线性表既可以采用顺序存储结构存储,也可以采用链式存储结构存储。(1)采用顺序存储结构线性表采用顺序结构存储时,称之为顺序表。很多
79、高级程序设计语言的数组(array)在计算机内的表示也是顺序结构,为此,可以用数组来表示顺序表。假设用数组 s来存放商品信息表的数据元素,则每个数据元素都可以采用 s0、s1、s2、s3表示,其中 s 为数组名,0,1,2,3为数组下标,用来标识数据元素的位置和顺序。如图 2-9 所示(为方便说明,假参见 P39 知识链接“线性表的存储”34 数据与数据结构小贴士一个元素覆盖前一个元素后,该元素本身依旧存在于原先的位置上,要等到后一个元素将其覆盖。最后一个元素覆盖前一个元素后,最后一个位置须去掉。设目前只有 4 条商品数据)。若要在商品 1 后插入(insert)商品 5,则插入位置后的每个数
80、据元素都要向后移动空出插入位置然后插入商品 5,具体过程如图 2-10 所示。图 2-11 数组的删除操作而删除(delete)操作恰好是插入操作的逆过程。若需将插入的商品 5 删除,则须将该数据元素后的所有数据元素依次向前移动,使后一数据元素覆盖前一数据元素。最终,依旧保证了数据元素存储的连续性,如图 2-11 所示。商品1商品2商品3商品4商品1商品1商品1商品1商品2商品3商品4商品2商品3商品4商品2商品3商品4商品2商品3商品4商品5s0s1s2s3s4s0s1s2s3s4s0s1s2s3s4图 2-10 数组的插入操作商品1商品5商品2商品3商品1商品1商品1商品2商品3商品4商品
81、2商品3商品4商品3商品4商品2s0s1s2s3s4s0s1s2s3s4商品4第二单元 初识数据结构351.使用数组存储插入和删除移动数据元素的次数与什么相关?2.使用数组存储,确定插入和删除元素的位置是否方便??思考与讨论?小贴士当一个序列中只含有指向它的后继结点的链接时,就称该链表为单链表。(2)采用链式存储结构线性表采用链式存储结构存储时,称为链表。链表中的数据可以是不连续存储的。链表不要求逻辑上相邻的数据元素在物理位置上也相邻,数据元素之间通过指针链接,如图2-12 所示。图 2-12 链表商品1商品2商品3商品4若要在商品 1 后插入商品 5,先要切断插入位置前后的数据链,然后将断开
82、的链连接到插入元素,具体过程如图2-13 所示。用有方向性的链连接各结点,表示数据的顺序;即使数据存储位置改变,顺序还是不变的图 2-13 链表的插入操作商品1商品2商品3商品4商品1商品2商品3商品4商品5商品536 数据与数据结构活 动3.4 现需要删除商品 3 数据元素,请在图 2-15 的基础上,用图示方式呈现全过程(数组和单链表两种方式)。若要删除一个商品,只要将须删除数据元素的前一个数据元素的指针指向下一个数据元素即可,如图 2-14 所示。1.数组和链表有何区别?2.你觉得本例中,链表插入操作方便还是数组方便?为什么?如果编程实现,哪个执行操作的次数可能多些??思考与讨论?图 2
83、-14 链表的删除操作商品1商品2商品3商品4商品1商品2商品3商品4商品5商品5商品1商品2商品3商品4S0S1S2S3商品1商品2商品3商品4图 2-15 数组和单链表第二单元 初识数据结构373.5 完成在商品 3 后插入商品 5 的算法步骤设计。算法步骤(数组)判断插入位置 i 是否合法,若不合法则返回 ERROR。判断数组存储空间是否已满,若满则返回 ERROR。_ _ _ _ _ _ _ _ _ _ _ _ 数组长度加 1。算法步骤(链表)查找商品序号为 i 的结点并由指针 p 指向该结点。生成一个新结点。将新结点的数据域信息 _。将新结点的指针域信息 _。将 p 结点的指针域指向
84、新结点。小贴士数组在不同高级语言定义是不同的,有的可以使用记录类型即结构类型的数组存储数据元素(将多种数据类型集合在一个用户自定义的数据类型中)。在 Python中可以用列表嵌套、定义类类型的对象列表等方式。为了方便理解算法思想,这里采用定义类类型的对象列表模拟数组的方式。3.程序实现根据上述算法,可以编写程序实现“商品信息表”的数据插入与删除。用 Python 语言实现顺序存储结构类型可以采用定义类的方式。商品信息定义如下:class goods:def _init_(self,bar_code=,name=,s_number=0,price=0):self.bar_code=bar_cod
85、e#条形码 self.name=name#品名 self.s_number=s_number#库存数量 self.price=price#零售价如果要加入生产日期,该如何定义??思考与讨论?38 数据与数据结构活 动3.6 若采用数组,请参考配套资源中的“商品表(数组).py”,完成以下程序,实现“商品信息表”的数据插入和删除,并上机运行。数据插入程序数据删除程序#表任意位置插入操作:def insert_sq(self,i,elem):if not isinstance(i,int):raise TypeError if i self.num:#num 是商品个数 raise IndexEr
86、ror self.data.append(goods)for j in range(self.num,i-1):_ _ _#删除表任意位置上的元素操作:def delete_sq(self,i):if not isinstance(i,int):raise TypeError if i=self.num:raise IndexError if self.num0:for j in range(i,self.num-1):_ del self.dataself.num-1 _*3.7 若采用链表,请参考配套资源中的“商品表(链表).py”,完成以下实现“商品信息表”的数据插入和数据删除的程序。数
87、据插入程序数据删除程序#定义将元素 item 插入表中作为第 index 个元素 def insert_lk(self,index,item):if indexself.getlength():print(index error.)return if index=0:q=Node(item,self.head)self.head=q else:post =self.head#post 为指针前驱 p=self.head.next j=1 while p!=0 and jindex:post=p _ _ if index=j:q=Node(item,p)_ _#定义删除表中第 index 个元素
88、的方法 def delete_lk(self,index):if self.is_empty()or indexself.getlength():print(Linklist is empty.)return if index=0:self.head=self.head.next else:post=self.head p=self.head.next j=1 while p!=0 and j=0 数据关系:R=|ai-1,ai D,i=2,n 基本操作:def InitList(self)#建立一个空的线性表 def GetElem(self,i)#返回线性表的第 i 个元素 def Len
89、gth(self)#求线性表的长度 def LocateElem(self,x)#求元素 x 在线性表中的位置;若不存在 x,则返回 0 def Insert(self,i,x)#在线性表的第 i 个位置上插入一个新元素 x def Delete(self,i)#删除线性表的第 i 个元素线性表的存储线性表可以使用顺序存储结构存储(此时称为顺序表),也可以使用链式存储结构存储(此时称为链表)。1.线性表的顺序存储大多数高级程序语言的数组在计算机内的表示是顺序结构。为此可以用数组来表示顺序表。数组(array)是由数据类型相同的数据元素构成的有序集合。它被用来存放大量数据类型相同的数据。数组与变
90、量一样,每个数组都要有一个唯一的名称,即数组名,命名规则和变量相同。数组元素是组成数组的基本单元,每一个存储单元对应于一个数组元素。数组元素用数组的名字和它自己在数组中的顺序位置来表示。例如,d0 表示名字为 d 的数组中的第一个元素,d1 代表数组 d 中的第二个元素,以此类推,如图 2-16 所示。40 数据与数据结构(1)插入操作如果要实现在线性表 L 中的第 i 个位置插入新元素 e,插入算法的思想为:如果插入位置不合理,抛出异常;如果线性表长度大于等于数组长度,则抛出异常或动态增加数组容量;否则从最后一个元素开始向前遍历到第 i 个位置,分别将它们都向后移动一个位置;将要插入元素 e
91、 填入位置 i 处;线性表长度加 1。(2)删除操作删除算法的思想为:如果删除位置不合理,抛出异常;否则取出删除元素;从删除元素位置开始遍历到最后一个元素位置,分别将它们都向前移动一个位置;表长减 1。数组的优点是具有随机访问的特性,可以快速地存取任意位置的元素。缺点是为了保持存储的连续性,插入和删除操作可能会移动大量元素。因此,数组适合查找和存取数据的操作,而不适合插入和删除的操作。2.线性表的链式存储链式存储是将数据元素存储在地址任意的存储空间中,用指针来指出元素间的逻辑关系,所以每个结点空间由数据域和指针域两部分组成,数据域用来存放数据元素,指针域用来存放指向后继的指针。链式存储是一种动
92、态存储结构,即每当要存储元素时就去申请一个存储空间,存放数据元素及指针。链表中的结点形式用以下方式表示:数据指针图 2-16 数组 d第二单元 初识数据结构41(1)单链表的插入 假设存储元素 e 的结点为 s,若要实现将 e 插入到 ai 和 ai+1 之间,如图 2-17 所示,该如何做呢?只须让 s.next 和 p.next 的指针做一点改变即可实现插入。即:s.next=p.next;p.next=s;通过图 2-18 可以理解以上两句代码。那么,这两句代码的顺序是否可以交换位置?即先 p.next=s,再 s.next=p.next。如果先执行 p.next=s 的话,p.next
93、 会被 s 覆盖,s.next=p.next 就等于 s.next=s 了,所以这两句代码是不能颠倒次序的。在单链表第 i 个位置上插入结点 e 的算法思想为:图 2-17 将要插入结点 s图 2-18 插入结点 s42 数据与数据结构若 i=0 则结点 e 插在表头(假设链表从第 0 个开始计数);否则指针 p 从表头开始沿着链往后查找第 i 个结点(为便于插入,在查找时始终要记住 p 的前驱,假设用 post 指向);当 p=0 时,说明 i 的值超出链表长度,即不存在第 i 个结点,不插入,返回。否则当 p 指在第 i 个结点上时,在 post 与 p 之间插入新结点 s。(2)单链表的
94、删除 单链表的删除操作如图 2-19 所示。图 2-19 单链表的删除假设元素 a2 的结点为 q,要实现删除结点 q 的操作,其实就是将它的前驱结点的指针指向后继结点即可。可以是:p.next=p.next.next;也可以是:q=p.next;p.next=q.next;删除单链表第 i 个结点的算法思想为:若 i=0,则删除首结点,即 head=head.next;否则指针 q 从链表头开始沿着链往后查找第 i 个结点(为便于删除,在查找时始终要记住 q 的前驱,假设用 p 指向);当 q=0 时,说明 i 的值超出链表长度,即不存在第 i 个结点,不用删除,返回。否则当 q 指在第 i
95、 个结点上时,删除 q,即 p.next=q.next。无论是单链表插入还是删除算法,它们其实都是由两部分组成:第一部分是从第一个元素开始逐个查找第 i 个元素,第二部分是实现插入和删除元素。链表的优点是插入和删除的速度快,链表长度不固定,拓展灵活。缺点是不能随机查找,必须从第一个开始逐个查找,效率很低。因此,链表比较适合插入或删除数据频繁的操作,而不适合查找操作。总之,线性表的顺序存储结构和链式存储结构各有其优缺点,不能简单地认为哪个好,哪个不好,需要根据实际情况,来综合判断采用哪种存储结构更能满足需求。第二单元 初识数据结构43一、项目任务现有某学校的学生健康情况登记表如表 2-6 所示,
96、表中每个学生的情况为一个记录,它由姓名、性别、年龄、班级和健康状况等 5 个数据项组成。表 2-6 学生健康情况登记表姓名性别年龄班级健康状况李林男17高二 6 班良好汤晨女16高二 6 班良好王平平男17高二 6 班一般陈小莉女17高二 6 班良好若用数组存储表中数据,假设班级人员变化,新进来“常龙”同学(男生、17 岁,高二6 班、健康状况良好),需要添加在“王平平”和“陈小莉”之间;又由于“李林”转学,需要将他的记录删除,请编程实现相应的操作。二、项目指引1.给出程序设计的基本思想、原理和算法描述。2.画出流程图,并编写程序。(1)编写删除操作函数。(2)编写插入操作函数。(3)实现以下
97、功能:调用插入操作函数,在上表中“王平平”和“陈小莉”之间插入“常龙”同学;调用删除操作函数,删除表中“李林”同学;输出最终的表。3.给源程序添加注释,保存并打印出程序及运行结果。三、交流评价与反思以自己熟悉的信息表达工具(如演示文稿等)制作电子作品,通过网络或课堂展示交流自己的程序,并对他人的程序进行评价。单元挑战 实现学校学生健康情况登记表的操作44 数据与数据结构一、主要内容梳理二、单元练习1.设有一个正整数序列组成的有序表(按递增次序有序,且允许有相等的整数存在),请编写能实现下列功能的程序:(1)确定在序列中比正整数 x 大的数有几个(相同的数只计算一次,如序列20,20,17,16
98、,15,15,11,10,8,7,7,5,4中比 10 大的数有 5 个);(2)将比正整数 x 小的数按递减次序排列;(3)将比正整数 x 大的偶数删除。(4)比较使用数组和链表实现上述功能的优劣。2.把二次多项式 ax2+bx+c 设计成一种抽象数据类型,该类型的数据对象为三个系数项a,b 和 c,操作部分为:(1)初始化 a,b 和 c 的值;(2)做两个多项式加法;(3)根据给定 x 的值计算多项式的值;(4)计算方程 ax2+bx+c=0 的两个实数根;(5)按照 ax*2+bx+c 的格式输出二次多项式。单元小结第二单元 初识数据结构453.某航空公司有一个自动预订飞机票的系统,假
99、设该系统中有一张用单链表表示的乘客表,见表 2-7。表中结点按乘客姓氏的字母次序进行链接(指针暂用序号表示),请为该系统编写有新乘客订票时修改乘客表的程序。dataLinkLiu7Chen4Wang5Bao2Mai8Dong6Xi0Deng5Chang3表 2-7 乘客表*4.约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知 n 个人(以编号 1,2,3,n 分别表示)围坐在一张圆桌周围。编号为 k 的人从 1 开始报数,数到 m 的那个人出列;他的下一个人又从 1 开始报数,数到 m 的那个人出列;依此规律重复下去,直到圆桌周围的人全部出列。请用单链表设计一个程序求出出列顺序(单链表最后一个
100、结点的指针指向链表的首结点)。程序:46 数据与数据结构说明:A信息意识,T计算思维,I数字化学习与创新,R信息社会责任三、单元评价评 价 内 容达 成 情 况能从教学管理相关数据认识数据元素、数据项、数据对象等基本概念(T)能从学生信息表、班级学生管理组织结构认识数据结构的逻辑结构(T)理解数据结构的四种逻辑结构及两种最基本的存储结构(T)理解什么是数据结构,了解数据结构在解决问题过程中的重要作用(T,A)了解抽象数据类型及其重要性(T)知道商品信息表是一种线性表(A)会使用数组实现顺序存储结构存储商品信息表;会使用链表实现链式存储结构存储商品信息表(T,I)会使用顺序存储结构和链式存储结构
101、实现商品数据的插入与删除(T,I)能说出数组和链表的区别(A)关注线性表的实际应用(A)学习目标按解密规则提取情报单元挑战线性表是最常用的数据结构,也是最简单最基本的一种数据结构。有一些特殊的线性表,它们与线性表的逻辑结构完全相同,但是在数据类型设定上,或者操作上有所不同,在实际应用中比较广泛。例如,日常生活中,经常会遇到排队预订系统等,这可以借助特殊的线性表队列来实现其功能;文字处理软件一般都具有对文本字符进行编辑、查找、选择、剪切、粘贴、撤消操作等各种编辑处理功能,这些功能的实现很多也都会用到特殊的线性表栈、字符串。在本单元中,我们将通过实例探究来学习这些特殊的线性表。理解队列的概念,并能
102、编程实现顺序队列的进队、出队操作。理解栈的概念,并能编程实现顺序栈的进栈、出栈操作。理解字符串的概念及其基本操作。第三单元 特殊的线性表日常生活中,商品和服务需求大于供给的情况时有发生,例如限量商品发售、医院专家门诊号等。为了避免商场、医院或营业厅里人潮拥挤,等候的客户排起长龙,一些企事业单位在相应网站或手机 App 上提供了预约服务,如图 3-1 所示。客户输入身份、账号信息提交后自动进入电子排队预订系统。你知道电子排队预订系统是如何实现排队预约的吗?项目四探索电子排队预订功能的实现队列的应用项目学习目标在本项目中,我们一起使用一种特殊的线性表结构来模拟实现排队功能。完成本项目学习,须回答以
103、下问题:1.排队预订遵循的是什么规律?2.什么是队列?队列遵循的原则是什么?3.队列在计算机中如何实现?图 3-1 电子排队预订系统49第一单元 走进“全新”信息社会小贴士队列是一种操作上受限制的线性表,只允许在队首和队尾进行操作。参见 P53 知识链接“队列”生活中还有其他类似的先进先出的例子吗??思考与讨论?项目学习指引1.分析问题电子排队预订系统是计算机自动控制的排队系统,排队的特点是先来先服务,那计算机是怎么实现自动排队的呢?当客户在电子排队预订系统提交信息后,客户的预订数据就进入队列,称为进队(也称入队),即在队尾(rear)插入一个客户账号数据;当正式购买商品时就到队列中取出客户账
104、号数据,称为出队,即在队首(front)取出一个客户账号数据(客户账号数据暂用 A0001 形式替代),如图 3-2 所示。核心概念队列(queue)是一种只允许在表的前端(队头)进行删除操作,而在表的后端(队尾)进行插入操作的线性表。队列又称为先进先出(first in first out,FIFO)表。活 动4.1 假设排队预订客户账号数据为 A0001、A0002、A0003、A0004,下面空的队列中依次 A0001 进队,A0002 进队,A0003 进队,叫号出队,A0004 进队,叫号出队,叫号出队,叫号出队,画出队列的变化过程。(1)(2)(3)A0003A0002A0001用
105、先进先出的数据结构来存储排队的客户账号数据,就可以方便地实现先来先服务,这种数据结构称为队列。第三单元 特殊的线性表图 3-2 预订购买队列50 数据与数据结构参见 P54 知识链接“队列的常用基本操作”小贴士进队在队列尾端插入一个新元素。出 队 从 队 列 首 端 取 出(或称删除)一个元素。front 为头指针,rear 为尾指针。(4)(5)(6)2.设计算法排队预订的队列变化过程如图 3-3 所示(为图示方便,暂定图中队列空间只有 4 个)。客户预订即为进队,假设A0001 表示第一个客户账号数据,购买即为队首出队。图中 rear 指向队列的尾端,图中 front 指向队列的首端。4.
展开阅读全文
课堂库(九科星学科网)所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。


2019届人教A版数学必修二同步课后篇巩固探究:2-1-1 平面 WORD版含解析.docx
2018秋苏教版高中语文必修五课件:4.2兰亭集序(共37张PPT).pptx
