数据结构(C语言版) Data Structure

Slides:



Advertisements
Similar presentations
大學入學考試中心 九十六學度學科能力測驗試題 國文科 -哈利波特番外篇-
Advertisements

天津1班面试专项练习1 综合分析现象类 主讲:凌宇 时间:5月21日 19:00—22:00.
基本概論 Basic concepts.
专题二 文学类文本·小说阅读(选考) ——把握人事,洞察百态 补上一课 如何读懂小说 第1讲 情节 第2讲 人物 第3讲 环境 
45天备考指南 2013年下半年国考资格证笔试系列讲座(2) 华图教师事业部 石杨平.
遊程規劃實務 中華民國遊程規劃設計協會.
因为我们年轻所以我们执着 因为我们是戴中教师所以我们更加努力
第一部分 微专题强化练.
第41课 公民的财产权 .
營利事業所得稅查核準則 相關概念介紹 南區國稅局 新營分局 林俊標 各位學員大家好:
数据结构 杨鹏宇 QQ: 版权所有,转载或翻印必究
自 我 介 紹 班級:運促一乙 姓名:林以權 學號:D
欧洲西部 要点·疑点·考点 欧洲西部 1. 自然环境 位置:欧洲西半部,北临北冰洋,西临大西洋,南临地中海
親愛的老師您好 感謝您選用本書作為授課教材,博碩文化準備本書精選簡報檔,特別摘錄重點提供給您授課專用。 說明: 博碩文化:
情緒與壓力管理 手部舒壓運動 第六組.
Introduction 基本概念 授課老師:蕭志明
第一章 資料結構導論 1-1 資料結構簡介 1-2 認識程式設計 1-3 演算法效能分析 1-4 物件導向程式設計與Java.
姓名:劉芷瑄 班級:J201 座號:39號 ISBN:957-33-1963-2
数据结构 第一章 绪论.
2014政法干警备考平台 2014政法干警考试群⑨ 中公教育政法干警考试 ——微博 中公教育政法干警考试
第2节 分析综合.
古文明中的直角三角形.
课堂回顾 1、继承与发展的关系及处理 关系:继承是发展的必要前提,发展是继承的必然要求。继承与发展,是同一个过程的两个方面。文化在继承的基础上发展,在发展的过程中继承。 文化在继承中发展 处理:把握好文化继承与发展的关系,批判地继承传统文化,不断推陈出新,革故鼎新,我们就能够作出正确的文化选择,成为自觉地文化传承者和享用者。
第16课时 放飞理想 立志成才 考 纲 内 容 要 点 探 究 考 点 解 读.
洋流(大规模的海水运动).
第十一章 真理与价值 主讲人:阎华荣.
资料分析 如何攻破最后瓶颈 主讲老师:姚 剑 4月6日20:00 YY频道:
學 號:997I0010、997I0024 組 員:洪韋鈴、王婷婷 日 期: 指導老師:王立杰 老師
学生培养的过程性评价.
小儿营养不良 第四篇第二章第二节小儿营养不良.
第一课 神奇的货币 第二框 信用工具和外汇 1-2 信用工具和外汇.
第七章 固 定 资 产.
2016年莱芜市乡村医生在岗培训 启动会.
单元 SD 5 菜鸟学飞 附件二 想学飞的职场菜鸟.
我的社區_觀塘 第三課.
计算机导论 指导教师:杨建国 二零零九年九月.
数 据 结 构 授 课: 课件制作: 单 位: 曾翎 杨鹏 应用数学学院.
公司法(六) 股份有限公司 1.
09学前教育班 魏文珍 自我介绍.
世界的物质性 人类社会也是物质的 自然界是物质的 从古猿到人的进化中脑量的变化
数据结构与算法 数据结构与算法实验
運輸與空間的交互作用 運輸發展的階段 一、分散的港口 二、侵入路線 三、發展支線 四、初步相互連結 五、完全相互連結 六、高度優越的幹線
第二单元 文化传承与创新.
政治常识 第一课 我国的国家制度(上) 第4课时 政体及其与国体的关系.
行政院國軍退除役官兵輔導委員會 嘉義榮民醫院.
2018/9/19.
新世纪计算机专业系列教材 数据结构 C++实现 第一章 缪淮扣 顾训穰 沈 俊 编著 科 学 出 版 社.
1.1 数据结构讨论的范畴 1.2 基本概念 1.3 算法和算法的量度.
產品語意 班級:夜四技產設三甲 學生:鄭舜鴻 學號:9A01C023 指導教師:唐蔚.
数据结构 第一章 绪论.
陳維魁 博士 儒林圖書公司 第五章 控制結構 陳維魁 博士 儒林圖書公司.
給你講一個故事 ﹕ 獻給所有未婚,將要結婚,和已婚的好朋友!!
作业 考核方式 书面作业:每个单元3-5个题,树、图和查找单元5-10个题。 上机作业:从第三周起每周一次 , 大约14次
《2015考试说明》新增考点:“江苏省地级市名称”简析
公立學校教職員退休資遣撫卹條例重點說明 苗栗縣政府人事處編製 主講人:陳處長坤榮 107年5月2日.
鄧姚文 資料結構 第一章:基本概念 鄧姚文
Week 2: 程式設計概念與 演算法的效能評估
C语言版 软件与理论教研室 张泽宝 哈尔滨工程大学计算机科学与技术学院.
第二节 极限 一、数列极限 定义:.
第1章 绪论 2019/4/16.
資料結構與演算法 第一章 基本概念 徐熊健 資料結構與演算法 徐熊健.
数 据 结 构 与 算 法.
演算法時間複雜度 (The Complexity of Algorithms)
演算法的效率分析.
山清水秀的林芝 yy 曾元一
序偶及直角坐標系統.
臺中市龍山國小 校園常見瓢蟲辨識   瓢蟲屬於鞘翅目瓢蟲科。目前世界上約有5000多種瓢蟲,台灣地區約有80種以上,其中能捕食有害生物的瓢蟲約七十種之多。瓢蟲因為捕食有害生物為主食,所以又稱為『活農藥』。
平面的基本性质 江苏省泰州中学 数学组 姜莹. 平面的基本性质 江苏省泰州中学 数学组 姜莹.
105-1 Data Structure Homework 4
Presentation transcript:

数据结构(C语言版) Data Structure 主讲教师 王晓刚 E-mail: socom2000@sina.com

课程安排 -----清华大学出版社 总学时:64 讲课学时:54(上课27次) 实验学时:10(上机5次) 教材: 《数据结构》( C语言版)严蔚敏、吴伟民 -----清华大学出版社 《数据结构题集》 ( C语言版)严蔚敏、吴伟民

课程重要性 编程基础 考研课程 计算机等级考试课程 程序员考试课程

参考书目 计算机及软件技术丛书—— 现代计算机常用数据结构和算法  潘金贵 编著 南京大学出版社 数据结构习题解析

本课程的体系结构 介绍数据、数据结构和抽象数据类型的概念。 从抽象数据类型的角度, 介绍操作系统和编译程序中涉及的 第一章 绪论 第一章 绪论 介绍数据、数据结构和抽象数据类型的概念。 第二章 ~ 第七章 基本数据结构 从抽象数据类型的角度, 分别讨论线性表、栈和队列、串、数组和广义表、 树、图等基本数据结构及其应用。 第八章 动态存储管理 介绍操作系统和编译程序中涉及的 动态存储管理的基本技术。

介绍了各种实现方法, 介绍数据库系统中组织文件的常用方法。 第九章 ~第十一章 查找和排序 第十二章 文件结构 第九章 ~第十一章 查找和排序 介绍了各种实现方法, 并着重从时间上进行定性或定量的分析和比较。 第十二章 文件结构 介绍数据库系统中组织文件的常用方法。

数据结构的概念 算法的概念和描述 算法的简单分析 第一章 绪论 数据结构的概念 算法的概念和描述 算法的简单分析

第一章 绪论 为什么要学习数据结构? 什么是程序、软件? -----数据结构的概念 N.沃思(Niklaus Wirth)教授提出: 第一章 绪论 为什么要学习数据结构? 什么是程序、软件? N.沃思(Niklaus Wirth)教授提出: 程序=算法+数据结构 以上公式说明了如下两个问题: (1)数据上的算法决定如何构造和组织数据(算法→数据结构)。 (2)算法的选择依赖于作为基础的数据结构(数据结构→算法)。 软件=程序+文档(软件工程的观点)

第一章 绪论 电子计算机的主要用途: 处理逐渐扩大到非数值计算领域(能处理多种复杂的具有一定结构关系的数据)。 -----数据结构的概念 第一章 绪论 电子计算机的主要用途: 早期: 主要用于数值计算。 后来: 处理逐渐扩大到非数值计算领域(能处理多种复杂的具有一定结构关系的数据)。

第一章 绪论 数值计算解决问题的一般步骤: 非数值计算问题: -----数据结构的概念 数学模型→选择计算机语言→编出程序→测试→最终解答。 第一章 绪论 数值计算解决问题的一般步骤: 数学模型→选择计算机语言→编出程序→测试→最终解答。 数值计算的关键是:如何得出数学模型(方程)? 程序设计人员比较关注程序设计的技巧。 非数值计算问题: 数据元素之间的相互关系一般无法用数学方程加以描述

第一章 绪论 非数值计算问题: 例1.1 电话号码查询问题: -----数据结构的概念 (1)按顺序存储方式:须遍历表 第一章 绪论 非数值计算问题: 例1.1 电话号码查询问题: (1)按顺序存储方式:须遍历表 (2)按姓氏索引方式:索引 要写出好的查找算法,取决于这张表的结构及存储方式。 电话号码表的结构和存储方式决定了查找(算法)的效率。

第一章 绪论 非数值计算问题: 例1.2 田径赛的时间安排问题(无向图的着色问题) : -----数据结构的概念 第一章 绪论 非数值计算问题: 例1.2 田径赛的时间安排问题(无向图的着色问题) : 设有六个比赛项目,规定每个选手至多可参加三个项目,有五人报名参加比赛(如下表所示)设计比赛日程表,使得在尽可能短的时间内完成比赛。

第一章 绪论 非数值计算问题 ----田径赛的时间安排问题解法 (1)设用如下六个不同的代号代表不同的项目: (2)用顶点代表比赛项目 -----数据结构的概念 第一章 绪论 非数值计算问题 ----田径赛的时间安排问题解法 (1)设用如下六个不同的代号代表不同的项目: 跳高 跳远 标枪 铅球 100米 200米 A B C D E F (2)用顶点代表比赛项目 不能同时进行比赛的项目之间连上一条边。 (3)某选手比赛的项目必定有边相连(不能同时比赛)。

第一章 绪论 -----数据结构的概念 只需安排四个单位时间进行比赛 1 A,C 2 B,D 3 E 4 F 比赛时间 比赛项目 姓名 第一章 绪论 姓名 项目1 项目2 项目3 丁一 A B E 马二 C D 张三 F 李四 王五 只需安排四个单位时间进行比赛 比赛时间 比赛项目 1 A,C 2 B,D 3 E 4 F A B F E C D

第一章 绪论 求解非数值计算的问题: 主要考虑的是设计出合适的数据结构及相应的算法。 即:首先要考虑对相关的各种信息如何表示、组织和存储? -----数据结构的概念 第一章 绪论 求解非数值计算的问题: 主要考虑的是设计出合适的数据结构及相应的算法。 即:首先要考虑对相关的各种信息如何表示、组织和存储? 因此,可以认为:数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作的学科。

第一章 绪论 数据结构课程的形成和发展: -----数据结构的概念 形成阶段: 第一章 绪论 数据结构课程的形成和发展: 形成阶段: 60年代初期,“数据结构”有关的内容散见于操作系统、编译原理和表处理语言等课程。1968年,“数据结构”被列入美国一些大学计算机科学系的教学计划。 发展阶段: 数据结构的概念不断扩充,包括了网络、集合代数论、关系等“离散数学结构”的内容。 70年代后期,我国高校陆续开设该课程。

-----数据结构的概念 第一章 绪论 《数据结构课程》所处的地位:

第一章 绪论 什么是数据结构? 几个概念: -----数据结构的概念 第一章 绪论 什么是数据结构? 几个概念: 数据(Data):是对信息的一种符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素(Data Element):是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。 数据对象(Data Object):是性质相同的数据元素的集合。是数据的一个子集。

第一章 绪论 什么是数据结构? -----数据结构的概念 几个概念: 第一章 绪论 什么是数据结构? 几个概念: 数据类型(Data Type):在一种程序设计语言中,变量所具有的数据种类。 例1、 在FORTRAN语言中,变量的数据类型有整型、实型、和复数型 例2、在C语言中 数据类型:基本类型和构造类型 基本类型:整型、浮点型、字符型 构造类型:数组、结构、联合、指针、枚举型、自定义

第一章 绪论 什么是数据结构? -----数据结构的概念 几个概念: 抽象数据类型(Abstract Data Type简称ADT) 抽象数据类型是用户在数据类型基础上 新定义的数据类型 抽象数据类型定义包括数据组成 和对数据的处理操作 抽象数据类型是数据和数据的使用者的一个接口 抽象数据类型的三元组表示 (D,S,P) D:数据对象 S:D上的关系集 P:对D的基本操作 -----数据结构的概念 第一章 绪论

第一章 绪论 什么是数据结构? -----数据结构的概念 几个概念: 抽象数据类型的定义:包括数据对象定义、数据关系定义和基本操作定义,书写格式为: ADT:抽象数据类型名{ 数据对象:数据对象的定义 数据关系:数据逻辑关系的定义 基本操作:基本操作的定义 } ADT 抽象数据类型名 (P9 例 1-6) -----数据结构的概念 第一章 绪论

第一章 绪论 什么是数据结构? 定义1---- 定义2---- -----数据结构的概念 是相互之间存在一种或多种特定关系的数据元素的集合。 Data_Structure = (D,S) D:数据对象 ,S:D上的关系集。 定义2---- 按某种逻辑关系组织起来的一批数据(或称带结构的数据元素的集合)应用计算机语言并按一定的存储表示 方式把它们存储在计算机的存储器中,并在其上定义了一个运算的集合。 -----数据结构的概念 第一章 绪论

第一章 绪论 数据结构的三个方面的含义: 逻辑结构--- 存储结构(物理结构)---- 运算(算法) -----数据结构的概念 数据元素间抽象化的相互关系(简称为数据结构)。 与数据的存储无关,独立于计算机,它是从具体问题抽象出来的数学模型。 存储结构(物理结构)---- 数据元素及其关系在计算机存储器中的存储方式。 是逻辑结构用计算机语言的实现,它依赖于计算机语言。 运算(算法) -----数据结构的概念 第一章 绪论

第一章 绪论 数据结构的三个方面的含义之: 逻辑结构---划分方法一 -----数据结构的概念 (1)线性结构---- 有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和一个后继。 例如:线性表、栈、队列、串 (2)非线性结构---- 一个结点可能有多个直接前趋和直接后继。 例如:树、图、多维数组、广义表等。 -----数据结构的概念 第一章 绪论

第一章 绪论 数据结构的三个方面的含义之: 逻辑结构---划分方法二 -----数据结构的概念 一、集合 结构中的数据元素除了同属于一种类型外,别无其它关系。 二、线性结构 结构中的数据元素之间存在一对一的关系。 三、树型结构 结构中的数据元素之间存在一对多的关系。 四、图状结构或网状结构 结构中的数据元素之间存在多对多的关系。 -----数据结构的概念 第一章 绪论

第一章 绪论 数据结构的三个方面的含义之: 存储结构 -----数据结构的概念 存储结构两方面的内容: 四种基本的存储方法: (1)数据元素自身值的表示(数据域) (2)该结点与其它结点关系的域(链域) 四种基本的存储方法: (1)顺序存储方法(结构) (2)链接存储方法(链式存储结构) (3)索引存储方法 (4)散列存储方法 同一种逻辑结构可采用不同的存储方法(以上四种之一或组合),这主要考虑的是运算方便及算法的时空要求。 -----数据结构的概念 第一章 绪论

第一章 绪论 数据结构的三个方面的含义之: 逻辑结构存储结构小结: -----数据结构的概念 (1)数据的逻辑结构、存储结构和数据的运算(算法)构成了数据结构三个方面的含义。 (2)程序设计的实质是对实际问题选择一个好的数据结构,加之设计一个好的算法。而好的算法在很大程度上取决于描述实际问题的数据结构。 -----数据结构的概念 第一章 绪论

第一章 绪论 数据结构的三个方面的含义之: 算法的概念和描述: 什么是算法? 所谓算法(Algorithm)是描述计算机解决给定问题的操作过程(解题方法),即为解决某一特定问题而由若干条指令组成的有穷序列。 -----数据结构的概念 第一章 绪论

第一章 绪论 数据结构的三个方面的含义之: 算法的概念和描述: 一个算法必须满足以下五个准则: (1)有穷性---执行了有限条指令后一定要终止。 例1.3、例1.4 (2)确定性(无二义)--- 算法的每一步操作都必须有确切定义,不得有任何歧义性。 -----数据结构的概念 第一章 绪论

例1.3 一个不是算法的例子 (1)begin (2)n=0 (3)n=n+1 (4)repeat (3) (5)end 例1.3 一个不是算法的例子 (1)begin (2)n=0 (3)n=n+1 (4)repeat (3) (5)end 例1.4 一个不超过100次计数的算法 (1)begin (2)n=0 (3)n=n+1 (4)if n>=100 do (5) else repeat(3) (5)output n (6)end 返回

第一章 绪论 数据结构的三个方面的含义之: -----数据结构的概念 一个算法必须满足以下五个准则: (3)可(能)行性--- 算法的每一步操作都必须是可行的,即每步操作均能在有限时间内完成。 (4)输入数据--- 一个算法有n(n>=0)个初始数据的输入。 (5)输出数据--- 一个算法有一个或多个的有效信息的输出。 思考:算法与程序有何区别? -----数据结构的概念 第一章 绪论

第一章 绪论 数据结构的三个方面的含义之: 算法的描述和实现 描述---可采用自然语言、数学语言或约定的符号语言。 实现---必须借助程序设计语言提供的数据类型及其运算。 本课的描述---采用类C语言 (P9-13 §1.3)。 -----数据结构的概念 第一章 绪论

第一章 绪论 算法的简单分析: 算法设计的要求:正确性、可读性、健壮性、高效率、低存储量需求 -----数据结构的概念 第一章 绪论 算法的简单分析: 算法设计的要求:正确性、可读性、健壮性、高效率、低存储量需求 算法的效率指算法的执行时间,也称作算法的时间复杂度 算法的存储量需求指算法执行过程中所需的最大存储空间,也称作算法的空间复杂度

第一章 绪论 算法的简单分析: -----数据结构的概念 程序正确性的四个层面: (1)不含语法错误 (2)程序对于n组输入数据能够得出满足规格说明要求的结果。 (3)程序对于精心选择的典型、边界性的n组输入数据能得出满足规格说明要求的结果。 (4)程序对于一切合适的输入数据都能得出满足规格说明要求的结果(穷举)。 -----数据结构的概念 第一章 绪论 返回

第一章 绪论 -----数据结构的概念 算法的简单分析之: --------算法效率的度量 1.程序运行所耗费的时间(由下列因素决定): 算法所选用的策略 问题的规模 书写程序所采用的语言 编译程序所产生的机器代码的质量 机器执行指令的速度 一个算法耗费的时间=算法中每条语句的执行时间之和。 若不考虑机器硬、软件因素,可以认为算法“运行工作量”的大小是问题规模的函数。 -----数据结构的概念 第一章 绪论

第一章 绪论 -----数据结构的概念 算法的简单分析之: --------算法效率的度量 2.问题的规模(size)--- 算法求解问题的输入量(或初始数据量)。 3.不考虑机器软硬件环境时算法的时间耗费: 设:执行每条语句所需时间为单位时间,则: 一个算法耗费的时间=所有语句的频度之和。 时间复杂度T(n)--- 即:时间耗费,它是算法求解问题n的函数。 渐近时间复杂度(Asymptotic Time Complexity)--- 即当问题的规模n→∞时的时间复杂度T(n)的数量级(阶),记作:T(n)=O(f(n)) 评价一个算法的时间性能,主要标准是算法的渐近时间复杂度 -----数据结构的概念 第一章 绪论

算法效率的度量:采用时间复杂度 例1.5 分析以下程序段的时间复杂度 for (i=1;i<n;i++) { y=y+1; 例1.5 分析以下程序段的时间复杂度 for (i=1;i<n;i++) { y=y+1; for (j=0; j<=(2*n); j++) x++; } /* 1 * / /* 2 * /

分析:语句的频度指的是该语句重复执行的次数。一个算法中所有语句的频度之和构成了该算法的运行时间。 语句1的频度是:n-1 语句2的频度是: 则该程序段的时间复杂度: T(n)=

例1.6 分析以下程序段的时间复杂度 i=1; while (i<=n) /* 1 * / 语句1的频度是:1 例1.6 分析以下程序段的时间复杂度 i=1; while (i<=n) i=i*2 语句1的频度是:1 设语句2的频度是f(n),则有: 即 ,取最大值 则该程序段的时间复杂度为: /* 1 * / /* 2 * /

由于内循环的执行次数虽与规模n无直接关系,但与外循环的变量取值有关。因此从内层向外层循环分析执行次数。 例1.7 x=1; for (i=1;i<=n;i++) for (j=1;j<=i;j++) for (k=1;k<=j;k++) x++; 由于内循环的执行次数虽与规模n无直接关系,但与外循环的变量取值有关。因此从内层向外层循环分析执行次数。

即: T(n)=[n(n+1)(2n+1)/6+n(n+1)/2]/2 所以: T(n)=O(n3/6+低次项) 取T(n)的数量级阶,得最后结果为: T(n)=O(n3) 当n→∞时,即n足够大时

 常见函数的时间复杂度按数量递增排列及增长率。 常数阶O(1) 对数阶O(log2n) 线性阶O(n) 线性对数阶O(nlog2n)  常见函数的时间复杂度按数量递增排列及增长率。 常数阶O(1) 对数阶O(log2n) 线性阶O(n) 线性对数阶O(nlog2n) 平方阶O(n2) 立方阶O(n3) …… k次方阶O(nk) 指数阶O(2n) 问题规模n 渐进时间复杂度O(n)

 本章小结 数据、数据结构、ADT等基本概念 数据结构的三个方面的内容 线性和非线性结构的逻辑特征 数据存储的四种基本方法 算法、算法的时间复杂度及其分析的简易方法

课外学习 看书 P1——P17 题集 P8 1.8 P9 1.9 P10 1.12