数据结构与算法——基本概念和术语

简介: 数据结构与算法——基本概念和术语

一.基本概念


数据(Data):

       1.是能输入计算机且能够被计算机处理的各种符号的集合。


       2.信息的载体。


       3.能够被计算机识别和加工   包括:数值型的数据:整形,实形。  非数值型的数据:文字,图像,图像,声音等。


数据元素和数据项

       1.数据元素:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理


       2.也简称为元素,或者称为记录,结点,顶点


       3.一个数据元素可以由若干给数据项组成


数据项:


       构成数据元素不可分割的最小单位


数据和数据元素和数据项的关系


       数据>数据元素>数据项


数据对象:

       是性质相同的数据元素的集合,是数据的一个子集


       例如:整数数据对象是集合N={0,±1,±2,……}


                   字母字符数据对象是集合C={‘A’,‘B’,……,‘Z’}


数据元素和数据对象的关系

   数据元素是组成数据的基本单位。与数据的关系:是集合的个体。


   数据对象是性质相同元素的集合。与数据对象的关系:集合的子集。


二.数据结构


   数据元素不是孤立存在的,他们直接存在莫种关系,数据元素直接的关系称为数据结构。


是指相互之间存在一种或者多种特定关系的数据元素集合或者说,数据结构是带结构的数据元素的集合。


数据结构包括的内容:

1.逻辑关系


2.存储关系或者数据的物理结构(数据元素及其关系在计算机内存中的表示 又称为映射)


3.运算和实现 (对元素可以施加的操作以及这些操作在相应的存储结构上的实现)


数据结构的两个层次

1.逻辑结构


描述数据结构之间的逻辑关系

与数据的存储无关,独立于计算机

是从具体问题抽象出来的数学模型

2.物理结构(存储结构)


数据元素及其关系在计算机存储器中的结构(存储方式)

是数据结构在计算机中的表示

逻辑结构与存储结构的关系

存储结构是逻辑关系的映射与元素本身的映像

逻辑结构是数据结构的抽象,存储结构是数据结构的实现

两者综合起来建立了数据元素之间的结构关系

逻辑结构的种类

线性结构    

最多一个前驱一个后驱,一个开始结点,一个终端结点。    eg:线性表,栈,队列,传等。


非线性结构(一对多)

一个结点可能有多个直接前驱和直接后继


eg:数,图,人机对弈等。


存储结构的种类

1.顺序存储结构


   用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系,数据之间的逻辑关系由元素的储存位置

   在C语言中用参数组来实现顺序存储结构

2.链式存储结构


用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示

C语言中用指针来实现链式存储结构

3.索引存储结构


在存储结点信息的同时,还可以建立附加的索引表     例如:通讯录

4.散列存储结构


根据结点的关键字直接计算出该结点的存储地址


三.数据内型和抽象数据类型


数据类型


1. 在使用高级程序设计语言编写程序时,必须对程序中出现的变量,长量,或表达式定义


例如:int ,char,float,double    ......


数组,结构,共用体,枚举等构造数据内型。


用户也可以用typedef自己定义数据内型


2.一些最基础的数据结构可以用数组类型来实现,如数组,字符串。


3.而另外一些常用的数据结构,如栈,队列,数,图等,不能直接用数据类型来表示。


   高级语言中的数据数据类型明显地或隐含地规定了在程序执行期变量和表达式的所有可能的取值范围,以及在这数值范围上所允许的操作。    列如:C语言中定义变量i为int类型,就表明i是【min,max】范围的整数在这个整数集上可以进行“+,-,*,\,%”等操作。


数据类型的作用:1.约束变量或常量的取值范围       2.约束变量或者常量的操作


数据类型<Data,Type>

 定义:数据类型是一组性质相同的值的集合以及的定义于这个值集合上的一组操作的总称。


               数据类型=值的类型+值集合上的一组操作


抽象数据类型:<Abstract Data type ADT>:


    是指一个数学模型以及定义在此数学模型上的一组操作。


       由用户定义,从问题抽象出数据模型(逻辑结构)

       还包括定义在数据模型上的一组抽象运算(相关操作)

       不考虑计算机内的具体存储结构与算法的具体实现

抽象数据类型的定义

   抽象数据类型可用(D,S,P)三个元素组表示


   D:数据对象;           S:S是D上的关系集;   P: 是对象D的基本操作集;


数据类型的定义格式

ADT     抽象数据类型名{


                               数据对象:<定义>


                               数据关系:<定义>


                               数据操作:<定义>        


                                       }ADT 抽象数据类型名


其中数据对象和数据关系的定义用伪代码描述。


伪代码:是一种算法描述语言,使用伪代码的目的是一种为了使被描述的算法可以容易地以任意一种编程语言实现。


基本操作的定义格式为:1.基本操作名(参数表)2.初始条件(初始条件描述)3.操作结果:(操作结果描述)


基本操作定义格式说明:

1.参数表:赋值参数只为操作提供输入值  eg:area(r)   power(x,y )          引用参数 以&打头,除可以提供输入值外还可以将值返回。


eg:   缩放操作  G1=scale (G,n)


       操作完成用自象返回:scale (&G,n)


2.初始条件:


 描述操作执行之前数据结构和参数应满足的条件,若不满足,则操作失败,并返回相应的错误信息。若初始条件为空,则省略之。


3.操作结果


     说明操作正常完成之后,数据结构的变化状况和应返回的结果。


抽象数据类型(ADT)定义举例:

1.计算圆的周长


ADT Circle{


       数据对象:D={r,x,y|r,x,y都是实数}


       数据关系:R={<r,x,y>|r是半径,<x,y>为圆心}


       基本操作:circle(&c,r,x,y)


       double Area(c)


                       初始条件:圆已存在


                       操作结果:计算面积


       double cicumference(c)


                       初始条件:圆已存在


                       操作结果:   计算周长


       …………


}ADT  Circle


2.复数的定义


ADT complex{


       D={r1,r2|r1,r2为实数}


       S={<r1,r2>|r1是实部,r2是虚部}


assige (&c,v1,v2)


       初始条件:空的复数c已存在


       操作结果:构造的复数c,r1,r2分别被赋以参数v1,v2的值


destroy(&c)


       初始条件:复数c已存在


       操作结果:复数c被销毁


…………


}ADT  complex


相关文章
|
3月前
|
存储 算法 Linux
【数据结构和算法】---二叉树(1)--树概念及结构
【数据结构和算法】---二叉树(1)--树概念及结构
36 0
|
9天前
|
C语言
数据结构基础详解(C语言):图的基本概念_无向图_有向图_子图_生成树_生成森林_完全图
本文介绍了图的基本概念,包括图的定义、无向图与有向图、简单图与多重图等,并解释了顶点度、路径、连通性等相关术语。此外还讨论了子图、生成树、带权图及几种特殊形态的图,如完全图和树等。通过这些概念,读者可以更好地理解图论的基础知识。
|
1月前
|
存储
【初阶数据结构篇】二叉树基础概念
有⼀个特殊的结点,称为根结点,根结点没有前驱结点。
|
2月前
|
存储
【数据结构】树和二叉树的概念及结构
数据结构——树和二叉树的概念及结构
58 3
【数据结构】树和二叉树的概念及结构
|
1月前
|
机器学习/深度学习 算法
【机器学习】解释对偶的概念及SVM中的对偶算法?(面试回答)
解释了对偶的概念,指出对偶性在优化问题中的重要性,尤其是在强对偶性成立时可以提供主问题的最优下界,并且详细阐述了支持向量机(SVM)中对偶算法的应用,包括如何将原始的最大间隔优化问题转换为对偶问题来求解。
48 2
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
机器学习之深度学习算法概念
深度学习算法是一类基于人工神经网络的机器学习方法,其核心思想是通过多层次的非线性变换,从数据中学习表示层次特征,从而实现对复杂模式的建模和学习。深度学习算法在图像识别、语音识别、自然语言处理等领域取得了巨大的成功,成为人工智能领域的重要技术之一。
67 3
|
3月前
|
存储 算法 C语言
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
|
3月前
|
搜索推荐 算法
【排序】数据结构——排序算法概念及代码详解(插入、冒泡、快速、希尔)
【排序】数据结构——排序算法概念及代码详解(插入、冒泡、快速、希尔)
|
3月前
|
编译器 数据库 索引
数据结构篇:树形数据结构的基本概念及其遍历方法
数据结构篇:树形数据结构的基本概念及其遍历方法
38 0
|
3月前
|
存储 算法
【二叉树】数据结构——BST二叉树基本概念及算法设计(插入、删除、遍历操作)
【二叉树】数据结构——BST二叉树基本概念及算法设计(插入、删除、遍历操作)