本文主要是介绍ARTS Tip5 数据结构基本概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
数据结构的研究内容:
- 研究数据元素之间的逻辑结构
- 研究数据在计算机内部的存储结构
- 研究如何在数据的逻辑结构和存储结构中实施有效的操作和处理
数据结构中数据之间的关系分为:
- 线性关系
- 非线性关系(非线性关系又分为:树关系和图关系)
数据之间的结构分为:
-
逻辑结构:体现数据元素之间的逻辑关系
-
存储结构(物理结构):数据在计算机内的表示,包含数据元素的表示和关系的表示。
存储结构又可以分为:
-
顺序存储:在顺序存储结构中(一般用一维数组)体现数据之间的关系。借助元素在内存中的位置表示元素之间的逻辑关系或者逻辑上相邻的节点存储在物理位置上相邻的存储单元里,节点的逻辑关系由存储单元的邻接关系来体现。
-
逻辑存储:一般采用指针实现数据之间的关系,包含链式结构和散列表及索引存储结构。借助元素存储地址的指针表示元素之间的逻辑关系或逻辑上相邻的节点在物理位置上可相邻,可不相邻,逻辑关系由附加的指针段表示。
(1)链式存储结构:利用指针直接表示数据元素之间的关系
(2)散列结构:根据节点的关键字,利用散列函数直接计算出该节点的存储地址
(3)索引存储结构:在存储节点信息的同时,还建立附加的索引表。索引表的每一项都是索引项,索引项一般形式:(关键字,地址),其中关键字是能唯一标识一个节点的那些数据项集合。索引存储结构分为稠密索引和稀疏索引。稠密索引是指每个节点在索引表中都有一个索引项的索引表;稀疏索引指一组节点在索引表中对应一个索引项的索引表。
数据类型:指一个值的集合以及在这些值上定义的一组操作的总称。
数据类型又根据是否允许分解分为:
-
原子类型:值不可再分的数据类型。比如
java
中的int
类型 -
结构类型:值可以继续分解的数据类型。比如
java
中的数组。
根据数据结构特性在数据的生存期间变动情况分为:
-
静态结构:数据存在期不发生任何变动。
-
动态结构:在一定范围内结构大小可以发生变动。
数据元素是数据的基本单元。
数据元素可由一个或多个数据项组成。数据的基本物理单位是数据项。
数据项有逻辑形式和物理形式,用ADT
给出的数据项的定义是逻辑形式,数据结构中对数据项的实现是其物理形式。
位(bit):计算机中表示信息的最小单位是二进制数的一位。
元素(节点):由若干位组成一个位串表示一个数据元素。
数据域:当数据元素由若干数据项组成时,对应于各个数据项的子位串就是数据域。
前驱节点:处于该节点之前的所有节点。
后继节点:处于该节点之后的所有节点。
直接前驱节点:与之相邻的前驱节点。
直接后继节点:与之相邻的后继节点。
开始节点:表中第一个节点。
终端节点:表中最后一个没有后继的节点。
抽象数据类型的定义:
由一个值和定义在该值域上的一组操作组成。按照值的不同特性分为:
- 原子类型:属于原子类型的变量的值是不可再分的。
- 固定聚合类型:属于该类型变量的值由确定数目的成分按照某种结构组成
- 可变聚合类型:属于该类型的变量的值的成分数目不确定,其中序列的长度是可变的。
算法:解决问题的一种方法或者一个过程。
一个完整的算法应该满足以下几条性质:
- 正确性。
- 确定性。
- 有穷性。
- 输入。
- 输出。
算法设计要求:
- 正确性。
- 可读性。
- 健壮性。
- 效率与低存储量需求
判断一个算法的好坏一般从两个方面考量,时间角度和空间角度。
度量一个程序的执行时间通常有 两种做法:
-
事后统计方法。
-
事前分析估算的方法。
(1)算法选用何种策略。
(2)问题规模。
(3)书写程序的语言。
(4)编译产生的机器代码质量。
(5)机器执行指令的速度。
参考书籍:《数据结构与算法分析 Java版》第二版
这篇关于ARTS Tip5 数据结构基本概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!