当前课程知识点:数据结构 >  第1章 绪论 >  1.3数据结构的描述 >  1.3数据结构的描述

返回《数据结构》慕课在线视频课程列表

1.3数据结构的描述在线视频

下一节:1.4抽象数据类型的定义和实现

返回《数据结构》慕课在线视频列表

1.3数据结构的描述课程教案、知识点、字幕

同学们大家好

我是云南大学信息学院的教师孔兵

下面我们讨论一下数据结构的描述方式

从数据结构的定义可知,数据结构包含两个东西

数据元素和它们之间的关系,怎么描述它呢?

数据结构有两种表示形式,一种称为数据的逻辑结构

这是我们在建模过程中使用的表示形式,是针对程序设计者的

当然,最终我们要利用计算机来处理数据结构

那么必须把数据结构以某种方式存储到计算机的内部

在计算机内部实现的数据结构称为物理结构或者叫存储结构

数据结构涉及到数据元素和它们之间的关系

那么要在计算机中表示数据结构,就涉及到两个问题

一个是数据元素如何在计算机中表示?

一个是数据元素之间的关系在计算机中怎样描述?

数据元素如何在计算机中表示比较简单

可以在程序设计语言当中,根据数据元素的特征定义相应的数据类型即可

例1中,书的信息可以通过定义一个

结构体类型来实现它在计算机中的表示

那么,如何在计算机中表达数据元素之间的关系呢?

所谓表达关系,就是要描述清楚谁是谁的前驱

谁是谁的后继这样的关系

数据元素之间的关系的表示,在计算机中有两种常用的表示方法

顺序映像和非顺序映像

顺序映像的特点是借助元素

在存储器中的相对位置来表示数据元素之间的逻辑关系

非顺序映像的特点是

借助指示元素存储地址的指针来

表示数据元素之间的逻辑关系

这样讲比较抽象

下面我们以线型结构为例来看一下什么是逻辑结构

什么是存储结构,顺序映像和非顺序映像又是怎么回事

我们介绍过线性表就是一个序列,在逻辑结构的层面上

也就是针对程序设计者的描述形式,线性表的描述形式有以下三种

第一种是按照它的序列,a1a2一直到an把它写成一行

对行中元素来说,站在它前面的,就是它的前驱

站在它后面的,就是它的后继

第二种是图示

每一个数据元素加一个圆圈

把它叫做一个顶点

如果两个数据元素之间是前驱和后继的关系

我们就从前驱顶点引一个箭头到后继顶点

从图中可以看出a1有一个箭头指向a2, a2有个箭头指向a3

以此类推一直到an

第三种是形式化的描述

首先是一个集合D,是数据元素的集合

第二个集合S是在D上定义的,数据元素之间关系的有限集

S中怎么描述关系的呢?

它是用一个有序对描述数据元素前驱和后继的关系

有序对是一个尖括号,括号中有两个数据元素

它的含义是第1个元素的后继是第2个元素

对称的第2个元素的前驱是第1个元素

例如, 一个尖括号中的元素是a1a2

这个有序对描述了a1的后继是a2,或者对称的说a2的前驱是a1

同理a2和a3,a3和a4,一直到an-1和an这样的有序对

这些有序对作为集合S的元素,一起描述了a1到an这样一个序列

我们要注意,这三种形式虽然描述形式上有差异

但是他们本质是一样的,都是描述了线性表

是一个序列这样的一个情况

在教材中,这三种描述的形式都会见到

我们要强调的是,三者是完全等价的。

要利用计算机处理数据,逻辑结构最终毕竟要在计算机内部加以实现

这就是所谓的物理结构,或者叫存储结构

前面已经提到数据结构的存储涉及到两个问题

数据元素的存储和数据元素之间关系的表示

数据元素的存储很容易实现,麻烦的是数据元素之间关系的表示

主要有两种办法,顺序映像和非顺序映像

下面我们就以线性表为例,看一下这两种存储结构的实现方式

顺序映像是说借助元素在存储器中的相对位置来描述元素之间的逻辑关系

对于线性结构的存储,我们是这样来处理的

我们利用一个数组来存储线性表,数组的大小是n

数组的类型是数据元素的类型

随后,按照线性表的逻辑结构,也就是a1a2到an这样的顺序

依次把线性表的n个元素,存放在数组0~n-1的n个单元当中

在这里,我们是借助数据元素在数组当中存储位置的相邻

暗示它们之间前驱和后继的关系

从图中

我们可以看到ai存放在i-1这个下标单元,ai-1存放在i-2这个下标单元

这两个单元是相邻的位置,我们就是通过这个相邻

暗示了ai-1的后继是ai,或者对称的说ai的前驱是ai-1

同理其他元素之间也是这样的,借助位置的相邻

暗示前驱和后继的关系

非顺序映像是借助指针来描述关系

对线性表来说,可以申请一个节点存储a1

然后呢,申请另外一个节点把a2存放好

为了描述a1的后继是a2,在存a1的节点中附设一个指针

用这个指针指向存储a2这个节点的地址

通过这个指针明确的指示,a1的后继是a2

同理,a2附设一个指针指向a3的节点

依次类推,直到an-1节点的指针指向an的节点

当然作为线性表的最后一个元素,an是没有后继的

那么,我们就把它指向后继的指针置空

表示已经没有后继元素了

通过线性表的例子我们看到

数据结构也就是数据和他们之间的关系

在逻辑结构的层面上是怎么描述的

在物理结构的层面上又是怎么描述的

当然树和图的描述更复杂一些

我们后面再讨论

下面,我们引入另外一个重要的概念--操作

好了,同学们

我们今天的课就到这

下节课再见

数据结构课程列表:

前言

-1.算法概念导入

--1.1 算法概念导入

-2.数据结构课程介绍

--2.数据结构课程介绍

-数据结构前言PPT

第0章 预备知识

-0.1变量、类型和表达式

--0.1变量、类型和表达式

-0.2 函数

--0.2 函数

-0.3 指针和单链表

--0.3 指针和单链表

-0.4 数组、指向函数的指针

--0.4 数组、指向函数的指针

-第0章 预备知识讨论题

-数据结构第0章预备知识PPT

第1章 绪论

-1.1什么是数据结构

--1.1什么是数据结构

--测试题

-1.2基本概念和术语

--1.2基本概念和术语

--测试题

-1.3数据结构的描述

--1.3数据结构的描述

--测试题

-1.4抽象数据类型的定义和实现

--1.4抽象数据类型的定义和实现

--测试题

-1.5算法和算法分析概念

--1.5算法和算法分析概念

--测试题

-1.6算法分析示例

--1.6算法分析示例

--测试题

-第1章 绪论讨论题

-数据结构第1章 绪论PPT

第2章 线性表

-2.1 线性表的类型定义

--2.1线性表的类型定义

--测试题

-2.2线性表的顺序表示和实现

--2.2 线性表的顺序表示和实现

--测试题

-2.3 线性链表

--2.3 线性链表

--测试题

-2.4 静态链表

--2.4 静态链表

--测试题

-2.5 循环链表和双向链表

--2.5 循环链表和双向链表

--测试题

-第2章 线性表讨论题

-数据结构第2章线性表PPT

第3章 栈和队列

-3.1 栈

--3.1栈

--测试题

-3.2 栈的实现

--3.2 栈的实现

--测试题

-3.3 栈的应用

--3.3 栈的应用

-3.4 栈与递归的实现

--3.4栈与递归的实现

--测试题

-3.5 队列和链队列

--3.5 队列和链队列

--测试题

-3.6 循环队列

--3.6 循环队列

--测试题

-第3章 栈和队列讨论题

-数据结构第3章栈和队列PPT

第4章 串

-4.1 串

--4.1 串

--测试题

-数据结构第4章 串PPT

第5章 数组

-5.1 数组定义和表示

--5.1 数组定义和表示

--测试题

-5.2矩阵的压缩存储

--5.2 矩阵的压缩存储

--测试题

-第5章 数组讨论题

-数据结构第5章数组PPT

第6章 树和二叉树

-6.1 树的定义和基本术语

--6.1 树的定义和基本术语

-6.2 二叉树和二叉树的性质

--6.2 二叉树和二叉树的性质

--测试题

-6.3 二叉树的存储结构

--6.3二叉树的存储结构

--测试题

-6.4 遍历二叉树

--6.4 遍历二叉树(1)

--6.4 遍历二叉树(2)

--测试题

-6.5 线索二叉树

--6.5 线索二叉树

--测试题

-6.6 树的存储

--6.6树的存储

-6.7 树的转换和遍历

--6.7 树的转换和遍历

--测试题

-6.8 赫夫曼树

--6.8 赫夫曼树

-6.9 赫夫曼编码

--6.9 赫夫曼编码

--测试题

-第6章 树和二叉树讨论题

-数据结构第6章树和二叉树PPT

第7章 图

-7.1 图的定义和术语

--7.1.1图的定义和术语(1)

--7.1.2图的定义和术语(2)

--测试题

-7.2 图的存储结构

--7.2.1 数组表示法(1)

--7.2.2 数组表示法(2)

--7.2.3 邻接表

--测试题

-7.3 图的遍历

--7.3.1 深度优先搜索

--7.3.2 广度优先搜索

--测试题

-7.4 最小生成树

--7.4.1 普里姆算法

--7.4.2 克鲁斯卡尔算法

--测试题

-7.5 有向无环图

--7.5.1 拓扑排序

--7.5.2 关键路径

--测试题

-7.6 最短路径

--7.6.1 单源最短路径-迪杰斯特拉算法

--7.6.2 每一对顶点之间的最短路径-弗洛伊德算法

--测试题

-第7章 图讨论题

-数据结构第7章图PPT

第8章 查找

-8.1 查找基本概念和顺序查找

--8.1 查找基本概念及顺序查找

--测试题

-8.2 有序表的查找

--8.2 有序表的查找

--测试题

-8.3 二叉排序树

--8.3.1 二叉排序树(1)

--8.3.2 二叉排序树(2)

--测试题

-8.4 平衡二叉树

--8.4 平衡二叉树

--测试题

-8.5 哈希表

--8.5.1 哈希表及哈希函数的构造

--8.5.2 解决冲突的方法

--8.5.3 哈希表的查找和性能分析

--测试题

-第8章 查找讨论题

-数据结构第8章查找PPT

第9章 内部排序

-9.1插入排序

--9.1.1 插入排序(1)

--9.1.2 插入排序(2)

--测试题

-9.2 希尔排序

--9.2 希尔排序

--测试题

-9.3 快速排序

--9.3 快速排序

--测试题

-9.4 选择排序

--9.4 选择排序

--测试题

-9.5 堆排序

--9.5 堆排序

--测试题

-9.6 归并排序

--9.6 归并排序

--测试题

-9.7 基数排序

--9.7 基数排序

--测试题

-9.8 排序方法总结

--9.8 排序方法总结

-第9章 内部排序讨论题

-数据结构第9章内部排序PPT

1.3数据结构的描述笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。