数据结构---学习前的必知知识

简介: 数据结构---学习前的必知知识

学习方向


对字符、表格和图像等具有一定结构的数据进行处理。这些数据内容存在着某种联系,只有分清楚数据的内在联系,合理地组织数据,才能对它们进行有效的处理,设计出高效的算法。如何合理地组织数据、高效地处理数据,这就是我们学习“ 数据结构”主要的学习方向。


数据结构的主要内容


计算机用于数值计算时,一般要经过如下几个步骤:

1. 从具体问题中抽象出数学模型

2. 设计一个用于此数学模型的算法

3. 编写程序,进行测试、调试,直到解决问题。

在此过程中寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间的关系,然后用数学语言加以描述,即建立相应的数学方程。求解这些数学方程的算法属于计算数学研究的范畴,如高斯消元法、差分法、有限元法等算法。数据结构主要研究非数值计算问题,非数值计算问题无法用数学方程建立数学模型。


数据结构的基本概念和术语


数据


数据(Data)是客观事物的符号表示,是所有能输入计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑中用到的字符串,多媒体程序处理的图形、图像、声音及动画等通过特殊编码定义后的数据。


数据元素


**数据元素( Data Element )**是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、记录等。数据元素用于完整地描述一个对象,如前一节示例中的一名学生记录,树中棋盘的一个格局(状态),以及图中的一个顶点等。


数据项


数据项(Data Item)是组成数据元素的、有独立含义的、不可分割的最小单位。


数据对象


数据对象( Data Object )是性质相同的数据元素的集合,是数据的一个子集,不论数据元索集合是无限集(如整数集),或是有限集(如字母字符集) .还是由多个数据项组成的复合数据元素(如学生表)的集合,只要集合内元素的性质均相同,都可称之为一个数据对象。


数据结构


数据结构( Data Structure )是相互之间存在一种或多种特定关系的数据元素的集合。数据结构是带“结构”的数据元素的集和,“结构” 就是指效据元家之间存在的关系。数据结构包括逻辑结构和存储结构两个层次。


逻辑结构


数据的逻辑结构是从逻辑关系上描述数据。它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作从具体问题中抽象出来的数学模型。

数据的逻辑结构有两个要素:一是数据元素:二是关系。数据元素的含义如前所述,关系是指数据元素间的逻辑关系。根据数据元素之间关系的不同特性,数据的逻辑结构通常有4类基本逻辑结构,它们的复杂程度依次递进。


097d38541069aadc0aabd2bd2e3f4e87_4ad0a440fe874eeaacba5ba15cff48b7.jpeg


集合结构


数据元素之间除了“属于同一一集合”的关系外,别无其他关系。

例:确定一名字生是否为班级成员,只需将班级看作一一个集合结构。


线性结构


数据元素之间存在一对一一的关系。

例:将学生信息数据按照其人学报到的时间先后顺序进行排列,将组成一个线性结构。


树结构


数据元素之间存在一对多的关系。

例:在班级的管理体系中,班长管理多个组长,每位组长管理多名组员,从而构成树结构。


图结构或网状结构


数据元素之间存在多对多的关系。

例:多位同学之间的朋友关系,任何两位同学都可以是朋友,从而构成图结构或网状结构。


线性结构与非线性结构


线性结构包括线性表、栈和队列( 具有特殊限制的线性表,数据操作只能在表的一端或两端进行) 、字符串(也是特殊的线性表,其特殊性表现在它的数据元素仅由一一个字符组成)、数组(是线性表的推广,它的数据元素是一个线性表),广义表(也是线性表的推广,它的数据元素是一个线性表, 但不同构,即或者是单元素,或者是线性表)。非线性结构包括树结构分为树(具有多个分支的层次结构)和二叉树(具有两个分支的层次结构) 、图结构分为有向图( 一种图结构,边是顶点的有序对)和无向图(另一种图结构,边是顶点的无序对) ]和集合结构。


f2d5a0708c86fff75aeadccef6b34c60_1d85c787d2a44903b408d7200cd0e1d2.jpeg


存储结构


数据对象在计算机中的存储表示称为数据的存储结构,也称为物理结构。把数据对象存储到计算机时,通常要求既要存储各数据元素的数据,又要存储数据元素之间的逻辑关系,数据元素在计算机内用一个结点来表示。数据元素在计算机中有两种基本的存储结构,分别是顺序存储结构和链式存储结构。


顺序存储结构


顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系的,通常借助程序设计语言的数组类型来描述。


链式存储结构


链式存储结构,无须占用一整块存储空间。但为了表示结点之间的关系,需要给每个结点附加指针字段, 用于存放后继元索的存储地址。所以链式存储结构通常借助于程序设计语言的指针类型来描述。


32694bf592e6c7980d5c0ecd7d9cef17_10d12e8763e2427e818c1e1d05729225.jpeg


42e3ce10ac13ac5a8497f0d828a123d9_e2692be2e8394fea8eba627e25e435c9.jpeg

目录
相关文章
|
11月前
|
存储 算法
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
这篇文章详细介绍了图的概念、表示方式以及深度优先遍历和广度优先遍历的算法实现。
190 1
数据结构与算法学习二二:图的学习、图的概念、图的深度和广度优先遍历
|
6月前
|
算法 数据可视化 开发者
为什么要学习数据结构与算法
今天,我向大家介绍一门非常重要的课程——《数据结构与算法》。这门课不仅是计算机学科的核心,更是每一位开发者从“小白”迈向“高手”的必经之路。
为什么要学习数据结构与算法
|
11月前
|
算法 Java 数据库
数据结构与算法学习十五:哈希表
这篇文章详细介绍了哈希表的概念、应用实例、实现思路,并提供了使用Java实现的哈希表代码。
190 0
数据结构与算法学习十五:哈希表
|
10月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
10月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
10月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找等具体详解步骤以及举例说明
|
10月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
10月前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
10月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
10月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找习题精讲等具体详解步骤以及举例说明