1 / 28

软件技术基础

段景山. 软件技术基础. 数据结构的基本概念. 制作 主讲. 段景山. 数据结构 数据的逻辑结构 数据的存储结构 算法. 第一篇 数据结构 第一章 数据结构的基本概念. 数据结构. 1 数据结构的概念 1.1 数据及数据元素的概念 数据 是客观事物在计算机内的抽象描述 数据 指一些事实,或一些数,或一些符号集合 组成数据的“事实”、“数值”或“符号” 称为数据元素 数据元素可由若干个 数据项 组成. 数据及数据元素. 例 1 、学生花名册. 数据. 学生名字的集合. 数据元素. 每个学生的名字. 例 2 、学生成绩表. 数据.

jenn
Download Presentation

软件技术基础

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 段景山 软件技术基础 数据结构的基本概念 制作 主讲 段景山

  2. 数据结构 • 数据的逻辑结构 • 数据的存储结构 • 算法 第一篇 数据结构 第一章 数据结构的基本概念

  3. 数据结构 • 1 数据结构的概念 • 1.1 数据及数据元素的概念 • 数据是客观事物在计算机内的抽象描述 • 数据指一些事实,或一些数,或一些符号集合 • 组成数据的“事实”、“数值”或“符号”称为数据元素 • 数据元素可由若干个数据项组成

  4. 数据及数据元素 例1、学生花名册 数据 学生名字的集合 数据元素 每个学生的名字 例2、学生成绩表 数据 学生成绩的集合 数据元素 每个学生的成绩 名字 数据项 成绩

  5. 数据结构的概念 • 1.2、数据结构的概念 • 数据结构讨论计算机系统中数据的组织形式及其相互关系 • 是相互之间存在一种和多种特定关系的数据元素的集合 涉及 例:大楼中的电梯 元素的集合 电梯在楼层中只能逐层移动 楼层间的关系是线性的 元素间的关系 例:公司的组织关系 在关系里的操作 员工间形成树型关系 电梯的运动 人员的管理

  6. 数据结构的概念 例:用数据结构描述整数I* 1、组成整数数据的全部元素的集合I I= {0,±1,±2,±3……} 2、I中元素的关系集合RE RE = {…… -1<0,0<1,1<2,……} 3、I*的运算集合P,比如算术四则运算 4、P中诸运算的运算规则RU, 如乘、除法优先于加、减法等 I*= {I,RE,P,RU}

  7. 数据结构的概念 • 元素在计算机系统里的表示 • 字符?字串?整数? • 元素间的逻辑关系--逻辑结构 • 元素在计算机系统中的存储方式,物理空间关系--存储结构 • 操作指令的集合 --算法 元素集合 计 算 机 系 统 元素间的关系 运算

  8. 数据结构的概念 • 数据的逻辑结构与数据的存储结构 例:班级里的同学 可能有各种各样的逻辑关系。比如班长、班委、群众等。形成相应的逻辑结构。 上课时,大家的座次形成存储结构 座次(存储结构)可能与逻辑关系有关,也可能无关。

  9. 数据结构的概念 • 小结: • 数据结构包括数据的逻辑结构,数据在计算机系统中的存储结构和数据操作的集合 • 把数据以一定的逻辑结构组织起来,以适当的方式存储在计算机系统的存储器里,其最终目的是为了有效处理数据,提高数据处理运算速度(教材P3) 逻辑结构 存储结构 算法 有效处理数据 提高数据处理运算速度 要素 目标 三个要素都与我们所要实现的目标相关

  10. 数据的逻辑结构 • 2、数据的逻辑结构 • 数据元素之间关系的描述 • 2.1、描述法 • 二元组 • 关系:一般抽象为前驱与后继关系, 即表明结构中,一个元素的前一个元素是谁,它的后一个元素又是谁 B = ( K, R ) K:元素集合 R:元素间关系的集合

  11. 数据的逻辑结构 • 2.2、图示法 • 图形要素: • 结点和有向线段 • 结点:表示一个数据元素,一般以方形框代表 不管多么复杂的结点,都看作是一个结点 • 有向线段:表示元素之间的关系。 • 箭尾指向的结点是前驱。 • 箭头指向的结点是后继 K h K i K j Ki的前驱 Ki的后继 研究为什么一个结点是 另一个结点的前驱或后继

  12. 数据的存储结构 • 3、数据的存储结构(物理结构) • 是数据元素在计算机系统存储器中的存放方式 • 是数据逻辑结构在存储器中的存放方式 存储器的特点:由地址连续的单元构成

  13. 数据的存储结构 0300 K1 0301 K2 0302 K3 0303 K1 K2 K3 K4 0304 K4 逻辑结构 物理结构 0305 0306 0307 0308 0309

  14. 数据的存储结构 0300 K1 K1 0301 K2 0302 K2 K3 K3 0303 0304 K4 K5 0305 K4 K5 K6 K6 0306 0307 逻辑结构 物理结构 0308 0309

  15. 数据的存储结构 • 思考:为什么数据逻辑结构与物理结构没有完全统一? 存储器的特点:由地址连续的单元构成。--线性关系 单元间的线性关系有时不能直接反映复杂的逻辑关系

  16. 数据的存储结构 几种物理存储方式 • 3.1顺序存储方法 • 连续顺序地存放数据元素 • 若数据的逻辑结构也是顺序(线性)的,则逻辑结构和物理结构完全统一了 • 连续存放的数据元素可以在内存中容易找到

  17. 数据的存储结构 • 3.2、链接存储方法 • 元素在内存中不一定连续存放 • 在元素中附加指针项,通过指针可以找到关系元素 结点 元素+指针 元素 指针

  18. 数据的存储结构 K1 K1 0300 0310 K2 K3 K2 0320 K3 0330 0340 K4 K4 K5 K6 K5 0350 逻辑结构 K6 0370 通过指针,可以方便地找到关系结点 0380 物理结构 指向后继结点的指针

  19. 数据的存储结构 • 3.3索引存储方法 • 为放在内存中的元素建立索引表 • 元素可以离散存放 • 通过查索引表找到需要的元素 0300 K1 0301 索引表 0302 1 K3 0303 2 0304 3 K4 0305 4 K2 0306 索引号 0307 0308 0309

  20. 数据的存储结构 • 3.4、散列存储方法 • 结点中设一关键值,利用关键值和相应算式算出结点位置(地址) 例:以用户姓名为关键值 算式:字母的序号相加 DJS 04+10+19 = 33 ZXM 26+24+13 = 63 所以,DJS放在33号地址单元 ZXM放在63号地址单元

  21. 数据的逻辑结构和存储结构 • 小结:数据的逻辑结构与物理结构 1、物理结构是元素在内存中的存储方式,与元素间固有的逻辑关系是相对独立的两个问题 • 物理结构着眼于结点在内存中的定位 2、简单的逻辑结构可能和物理结构一致 • 例:线性逻辑关系与顺序存储方法 3、利用物理结构在内存中找到一个结点,而为什么要找这个结点却由元素间的逻辑关系决定 • 任何一个算法的设计取决于选定的数据逻辑结构,而算法的实现依赖于采用的存储结构 4、逻辑结构与存储结构是一个问题的两个方面

  22. 1 2 3 4 5 6 数据的逻辑结构和存储结构 例:班级的逻辑关系与课堂上的座次 0300 例:一个树形关系结构用索引方式存储 K1 0301 0302 1 K3 0303 2 K6 0304 3 K4 0305 4 K2 0306 5 K5 0307 6 0308 0309

  23. 算法 • 4、算法 • 4.1、算法的概念及特点 • 算法是为解决某一特定类型问题规定的运算规则的有穷集合 • 有穷性 • 确定性 • 有效性 • 输入 • 输出 非无限执行,必须在有限步骤内结束 非二义,下一步必须是明确的 特 点 每一步是可执行的 外部输入零个或多个 至少一个

  24. 算法 • 4.2、算法与程序 • 相似:都是解决问题的方法和步骤,是指令的集合 • 区别: • 有穷性 • 描述方法 • 联系:程序用某种程序设计语言来实现算法 类似: While(1){ …… } 的语句段,在程序中允许 但在算法中不允许 程序使用程序设计语言 算法可以使用框图及其他语言

  25. 算法 • 4.3、算法语言 • 算法应有严格的描述语言(确定性) • 一般使用类PASCAL语言 • 在本课程中使用类C语言,即语言风格类似于C • 要求描述一个算法时必须满足: • 对输入和输出的描述 • 描述语句准确、无二义 • 保证算法的有穷性和有效性

  26. 名称 输入参数 输出类型 使用的变量说明 初始化 算法主体部分 算法 • 算法的写作规范 int seq_search( elemtype s[ ],keytype k, int n) { int low, high, mid; s[n].key = k; i = 0; while(s[ i ].key != k) i++; if(i < n) return i; else return -1; }

  27. 算法 • 4.4、在数据结构中常见的问题 • 创建、插入、删除、更新、检索、排序…… • 注意:每个问题都有一种和多种算法 • 找到效率最高的 • 以最容易理解的方式设计 • 设计的算法不容易出错或出错情况较少

  28. 作业 • 教材P70 1 2 3 4 5

More Related