【五分钟】001-数据居结构概论

简介: 【五分钟】001-数据居结构概论

学习要求


概念和术语

数据结构的基本概念:数据、数据元素、数据结构、数据的逻辑结构、物理结构、算法等。


基本概念和术语


【1】

数据 (Data) 是信息的载体,能够被计算机识别、存储和加工处理。


数据元素(Data Element) 是数据的基本单位,有时数据元素也称为元素、节点、顶点、记录。


数据结构(Data Structure) 指的是数据之间的相互关系,即数据的组织形式。数据结构异步包括以下三个方面的内容:


数据结构一般包括以下三个方面的内容:数据的逻辑结构、数据的存储结构、数据的运算。

数据的逻辑结构(Logical Structure),表示数据元素之间的逻辑关系。数据的逻辑结构是从逻辑关系上描述数据,与数据的存储无关,是独立于计算机的。

数据的存储结构(Storage Structure),表示数据元素及其关系存储在计算机存储器。数据的存储结构是逻辑结构用计算机语言的实现,它依赖于计算机语言。

数据的运算,即对数据施加的操作。(最常用的检索、插入、删除、更新、排序等。)

常常将数据的逻辑结构简称为数据结构。


【2】

数据类型(Data Type)是高级程序设计语言提供的一种概念。所谓数据类型,是一个值的集合在这些值上定义的一组操作的总称。例如 C 语言中的 int 类型,以及 int 表示的最大最小值范围、int 可以进行加减乘除等操作。


数据类型有两种,一种是原子类型,一种是结构类型。原子类型其值不可拆解,例如大多数语言中都有的浮点型(float、double)、整形(int、long)等。结构类型其值可以被分解为若干个成分,如 C 语言的 数值、结构等类型。


【3】

抽象数据类型(Abstract Data Type,ADT)指抽象数据的组织和与之相关的操作。它可以看作是数据在逻辑结构及其在逻辑结构上定义的操作。抽象数据类型可以看作是描述问题的模型,它独立于具体实现。它的优点是将数据和操作封装在一起,使得用户程序只能通过在 ADT 里定义的某些操作来访问其中的数据,从而实现了信息隐藏。


ADT 相对于是在概念层/抽象层上描述问题,在面向对象语言中,相对于接口、抽象类。而类则是在实现层上描述问题,类是 ADT 的实现。


ADT 的主要意义是将数据和操作封装起来,使得用户程序只能在 ADT 里定义的某些操作来访问其中的数据,从而实现了信息隐藏。


谈一下 C# 中的属性。C# 、Java 中都有属性这一概念,例如 C# 定义一个属性:public int a{get;set;}。在 C# 中,真正存储数据的都是字段,属性是我们字段定义的一种存取操作设计。因此,一个类中,字段属于数据,属性可以看作是数据的操作。


【4】

在数据结构中,为了表示数据的存储,出现了很多种结构形式。无论哪种存储结构,都是由多个元素组成的,这些元素之间的逻辑关系可以有统一的术语表示。


A - B - C

一个数据结构中,最先开始的第一个结点,称为开始结点。而最后一个称为终端结点;对于数据结构中的任何一个结点 A,如果 A 在 B 的前面并且两者相邻,则称 A 为 B 的直接前趋(Immediate Predecessor);如果一个 结点 C,C 与 B 相邻且 C 在 B 的后面,则称 C 为 B 的直接后继(Immediate Successor)。开始结点没有直接前趋;终端结点没有直接后继。


【5】

数据的逻辑结构有两大类:


(1)线性结构

如果结构是非空集(即具有元素),具有以下特征:

① 集合中必存在唯一一个开始结点。

② 集合中必存在我要一个终端结点。

③ 除最后一个元素外,其它数据元素都有唯一一个直接后继。

④ 除第一个元素外,其它数据都有唯一一个直接前趋。


(2)非线性结构

非线性结构中每个结点都可能有多个直接前趋和直接后继。

注意,数据的逻辑结构有两大类,线性结构、非线性结构;而数据的逻辑结构有四种:

1.集合结构:数据元素之间都没有逻辑关系。

2.线性结构:数据元素之间存在着“一对一”的线性关系的数据结构。1:1.

3.树形结构:数据元素之间定义了层次关系。1:N。

4.图状结构(网格结构):数据元素之间定义了网状关系。M:N。


【6】

数据的存储结构有四种基本方法:


顺序存储方法、链接存储方法、索引存储方法、散列存储方法。


(1)顺序存储方法:

把逻辑上相邻的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来

体现。通常借助程序语言的数组描述,存储时使用一块连续的空间。


(2)链接存储方法:

该方法不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系由附加的指针字段表示。通常借助于

程序语言的指针类型描述。


(3)索引存储方法:

该方法通常在储存结点信息的同时,还建立附加的索引表。索引表由若干索引项组成,若每个结点在索引表中都有一个索引项,则该索引表称之为稠密索引,稠密索引中索引项的地址指示结点所在的存储位置。


若一组结点在索引表中只对应一个索引项,则该索引表称为稀疏索引,稀疏索引中索引项的地址指示一组结点的起始存储位置。索引项的一般形式是:(关键字、地址)。

关键字是能唯一标识一个结点的那些数据项。


微信图片_20220505135049.png

图来源:https://blog.csdn.net/weixin_43507410/article/details/112463344

(4)散列存储方法:

该方法的基本思想是:根据结点的关键字直接计算出该结点的存储地址。散列又称为哈希、Hash。


测试


注:当前没有学到的内容,专题后面的文章会继续学到。读者答题不需要纠结。


1.下列选项中,属于逻辑结构的是

A.线性表

B.链表

C.顺序栈

D.循环队列

逻辑结构:集合、线性(如线性表)、图、树;

存储结构:顺序、链接(如链表)、索引、散列;

栈、链,都是存储结构;循环队列是一种顺序存储结构。

逻辑结构有线性结构(线性表)、非线性结构。


2.数据结构分为逻辑结构和存储结构,下列数据结构中不属于存储结构的是

A.线性链表

B.二叉链表

C.栈与队列

D.循环队列

线性链表是线性表的链式存储结构;二叉链表是二叉树的链式存储结构;栈与队列分别是特殊的线性表;循环队列是队列的一种顺序存储结构。可知,线性链表、二叉链表、循环队列均属于存储结构,而栈与队列属于逻辑结构。


3.针对线性表逻辑上相邻的两个元素,下列叙述中,正确的是(  )

A.采用顺序存储时一定相邻,采用链式存储时也一定相邻

B.采用顺序存储时一定相邻,采用链式存储时不一定相邻

C.采用顺序存储时不一定相邻,采用链式存储时一定相邻

D.采用顺序存储时不一定相邻,采用链式存储时也不一定相邻


4.下列选项中,不属于线性结构的是

A.网

B.栈

C.队列

D.线性表


5.下列选项中,不属于线性结构的是

A.网 B.栈 C.队列 D.线性表

栈、队列、线性表都是线性结构。


6.下列选项中,与数据存储结构直接相关的是

A. 线性表

B. 双向链表

C. 二叉树

D. 有向图

答案:1,A;2,C;3,B;4,A;5,A;6,B。

相关文章
|
6天前
|
机器学习/深度学习 数据可视化 安全
数据库系统概念(第二周 第二堂)(关系模型)
数据库系统概念(第二周 第二堂)(关系模型)
|
6天前
|
机器学习/深度学习 算法 搜索推荐
普林斯顿算法讲义(四)(4)
普林斯顿算法讲义(四)
39 2
|
6天前
|
人工智能 算法 数据可视化
普林斯顿算法讲义(二)(1)
普林斯顿算法讲义(二)
64 0
|
6天前
|
存储 算法 Java
普林斯顿算法讲义(一)(1)
普林斯顿算法讲义(一)
60 0
|
6天前
|
机器学习/深度学习 存储 算法
普林斯顿算法讲义(三)(4)
普林斯顿算法讲义(三)
42 1
|
6天前
|
人工智能 算法 Java
普林斯顿算法讲义(二)(2)
普林斯顿算法讲义(二)
37 0
|
6天前
|
大数据 程序员 C语言
划重点!五层递加三角 - 大数据揭秘编程语言的隐藏技巧
划重点!五层递加三角 - 大数据揭秘编程语言的隐藏技巧
|
10月前
|
存储 人工智能 算法
【开卷数据结构 】图的五大存储方式
【开卷数据结构 】图的五大存储方式
191 0
|
11月前
|
存储 C语言
《C和指针》读书笔记(第十章 结构和联合)(下)
《C和指针》读书笔记(第十章 结构和联合)(下)
|
11月前
|
存储 C语言 C++
《C和指针》读书笔记(第十章 结构和联合)(上)
《C和指针》读书笔记(第十章 结构和联合)(上)