【五分钟】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。

相关文章
|
7月前
|
缓存 编译器 C语言
|
Cloud Native Go 开发工具
如何让CSDN学习成就个人能力六边形全是100分:解析个人能力雷达图的窍门
如何让CSDN学习成就个人能力六边形全是100分:解析个人能力雷达图的窍门
316 0
|
7月前
|
机器学习/深度学习 数据可视化 安全
数据库系统概念(第二周 第二堂)(关系模型)
数据库系统概念(第二周 第二堂)(关系模型)
|
7月前
|
大数据 程序员 C语言
划重点!五层递加三角 - 大数据揭秘编程语言的隐藏技巧
划重点!五层递加三角 - 大数据揭秘编程语言的隐藏技巧
|
存储 C语言 C++
《C和指针》读书笔记(第十章 结构和联合)(上)
《C和指针》读书笔记(第十章 结构和联合)(上)
|
存储 C语言
《C和指针》读书笔记(第十章 结构和联合)(下)
《C和指针》读书笔记(第十章 结构和联合)(下)
|
存储 开发框架 安全
【C#本质论 九】值类型-结构之力
【C#本质论 九】值类型-结构之力
102 0
|
C语言
C语言程序设计(王立柱)第五章答案 结构,联合,枚举
只有聪明人才能看见的摘要~( ̄▽ ̄~)~
92 0
|
存储 编译器 C语言
课外闲谈4.对齐数的概念
结构体每个成员相对于结构体首地址的偏移量都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字符;
115 0
课外闲谈4.对齐数的概念
|
算法 关系型数据库 定位技术
【重新发现PostgreSQL之美】- 25 最强大脑题目 泰森多边形(空间战略布局问题)
大家好,这里是重新发现PostgreSQL之美 - 25 最强大脑题目 泰森多边形(空间战略布局问题)