数据结构(基本概念和术语1)

数据、数据元素、数据项和数据对象

1.数据(Data)

是能输入计算机且能被计算机处理的各种符号的集合
信息的载体
是对客观事物符号化的表示·能够被计算机识别、存储和加工

包括:
数值型的数据:整数、实数等
非数值型的数据:文字、图像、图形、声音等
 

2.数据元素(Data Element)


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

也简称为元素,或称为记录、结点或顶点。

一个数据元素可由若干个数据项组成(Data ltem)
 

3.数据项(Data Item)

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

数据、数据元素、数据项三者之间的关系:
数据>数据元素>数据项

数据书有数据元素构成,数据元素是有数据项构成。
 

4.数据对象(Data Object)

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

数据元素与数据对象:

数据元素——组成数据的基本单位

与数据的关系:是集合的个体


数据对象——性质相同的数据元素的集合

与数据的关系是:集合的子集

数据结构:

数据元素不是孤立存在的,它们之间存在着某种关系,数据元素相互之间的关系称为结构(Structure )

是指相互之间存在一种或多种特定关系的数据元素集合

或者说,数据结构是带结构的数据元素的集合

数据结构包括以下三个方面的内容:

1.数据元素之间的逻辑关系,也称为逻辑结构。
2.数据元素及其关系在计算机内存中的表示(又称为映像),称为数据的物理结构或数据的存储结构。
3.数据的运算和实现,即对数据元素可以施加的操作以及这些操作在相应的存储结构上的实现。

数据结构的两个层次:

1.逻辑结构:
描述数据元素之间的逻辑关系

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

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

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

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


逻辑结构与存储结构的关系:
存储结构是逻辑关系的映象与元素本身的映象。
逻辑结构是数据结构的抽象,存储结构是数据结构的实现

两者综合起来建立〈数据元素≥间的结构头系。

逻辑结构的种类:

划分方法一:

(1)线性结构
有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。
例如:线性表、栈、队列、串

(2)非线性结构
一个结点可能有多个直接前趋和直接后继例如:树、图
 

划分方式二——四类基本逻辑结构
(1)集合结构:结构中的数据元素之间除了同属于一个集合的关系外,无任何其它关系。

(2)线性结构:结构中的数据元素之间存在着一对一的线性关系。
(3)树形结构:结构中的数据元素之间存在着一对多的层次关系。
(4)图状结构或网状结构:结构中的数据元素之间存在着多对多的任意关系。

存储结构的种类:

四种基本的存储结构:

1.顺序存储结构

用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。
C语言中用数组来实现顺序存储结构。

2.链式存储结构

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

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

3.索引存储结构

在存储结点信息的同时,还建立附加的索引表。

索引表中的每。项称为、个索引项,
索引项的一般形式是:(关键字,地址)

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

若每个结点在索引表中都有一个索引项,则该索引表称之为稠密索引(Dense Index)。若一组结点在索引表中只对应一个索引项,则该索引表称之为稀疏索引(Sparse Index)

4.散列存储结构

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


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/55527.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#---第十九课:不同类型方法的执行顺序(new / virtual / common / override)

本文介绍不同类型的方法,在代码中的执行顺序问题: 构造方法普通方法(暂用common代替)、虚方法(Virtual修饰)、New方法(new修饰)三个优先级相同overide方法(会替换virtual…

前端面试:【跨域与安全】跨域问题及解决方案

嗨,亲爱的Web开发者!在构建现代Web应用时,跨域问题和安全性一直是不可忽视的挑战之一。本文将深入探讨跨域问题的背景以及解决方案,以确保你的应用既安全又能与其他域名的资源进行互操作。 1. 什么是跨域问题? 跨域问…

Go 自学:defer关键字

我们可以使用defer关键字延迟代码的执行&#xff0c;相当于我们把代码放入一个stack中&#xff0c;遵循last in first out的原则输出代码。 package mainimport ("fmt" )func myDefer() {for i : 0; i < 5; i {defer fmt.Print(i)} }func main() {defer fmt.Prin…

Elasticsearch配置优化

以下的优化基础是安装的 Elasticsearch 版本为 7.17.7&#xff0c;同时jdk版本为 1.8.321 1、jvm参数优化 这里说的jvm参数调优&#xff0c;是指elasticsearch安装目录下的jvm.options配置&#xff0c;如下图所示&#xff1a; 这里调整的内容主要是调整垃圾回收的收集器&#…

day16 代码回想录 二叉树03 二叉树的最大深度n叉树的最大深度二叉树的最小深度完全二叉树的节点个数

大纲 ● 104.二叉树的最大深度 ● 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数 二叉树的最大深度 题目链接&#xff1a;104.二叉树的最大深度 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数 叶子节点是左右孩子节点都为空的节点 …

c#两个数进行交换

1.使用中间变量的形式 private static void Main(string[] args){int a110;int a220;ChangeNumber(ref a1,ref a2)onsole.WriteLine($"a1的值{a1},a2的值{a2}");Console.ReadLine();}public static void ChangeNumber(ref int a1, ref int a2){int temp a1;//temp10…

机器学习实战之模型的解释性:Scikit-Learn的SHAP和LIME库

概要 机器学习模型的“黑箱”困境 机器学习模型的崛起让我们惊叹不已&#xff01;不论是预测房价、识别图片中的猫狗&#xff0c;还是推荐给你喜欢的音乐&#xff0c;这些模型都表现得非常出色。但是&#xff0c;有没有想过&#xff0c;这些模型到底是如何做出这些决策的呢&a…

【实操干货】如何开始用Qt Widgets编程?(三)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 在本文中&#xff0…

Unity——拖尾特效

拖尾是一种很酷的特效。拖尾的原理来自人类的视觉残留&#xff1a;观察快速移动的明亮物体&#xff0c;会看到物体移动的轨迹。摄像机通过调整快门时间&#xff0c;也可以拍出具有拖尾效果的照片&#xff0c;如在城市的夜景中&#xff0c;汽车的尾灯拖曳出红色的线条。 在较老…

如何选择合适的损失函数

目录 如何选择合适的损失函数 1、均方误差&#xff0c;二次损失&#xff0c;L2损失&#xff08;Mean Square Error, Quadratic Loss, L2 Loss&#xff09; 2、平均绝对误差&#xff0c;L1损失&#xff08;Mean Absolute Error, L1 Loss&#xff09; 3、MSE vs MAE &#xff…

DevOps之自动化测试

什么是自动化测试&#xff1f; 明确一下自动化测试不是什么。自动化测试不是指自动化生成测试代码&#xff0c;而是自动化地执行由开发人员或测试人员编写的测试代码。正如下面这句谚语&#xff1a;“绝不要手工去做任何可以被自动化处理的事情。——Curt Hibbs” 之前是由人…

leetcode做题笔记102. 二叉树的层序遍历

给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 思路一&#xff1a;递归 int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes){int** ans(int**)mal…

在ubuntu上部署label-studio

1. 安装label-studio 由于服务器的默认python3版本太低&#xff0c;尝试了很多方法&#xff0c;没有升级。因此采用annaconda方式安装label-studio. a.安装anaconda: 参照如下链接&#xff0c;安装anaconda。 Ubuntu安装Anaconda详细步骤&#xff08;Ubuntu22.04.1&#xff…

复现【YOLO v7 + 各种tracker实现多目标跟踪】

参照YOLO v7 各种tracker实现多目标跟踪配置环境 1、配置要求 python3.7.0 pytorch1.7.0 torchvision0.8.0 cudatoolkit11.0py-motmetrics (pip install motmetrics)cython-bbox (pip install cython_bbox)opencv 2、配置过程 创建py37虚拟环境 conda create -n uavMOT p…

G. The Morning Star - 思维

分析&#xff1a; 直接暴力就会tle&#xff0c;不知道怎么下手&#xff0c;可以统计八个方向一条线上的所有坐标&#xff0c;这些坐标一定可以放在一起满足&#xff0c;分析都有哪些线&#xff0c;当横坐标相同时会有竖着的一条线都可以&#xff0c;也就是x c&#xff0c;当纵…

Midjourney 完整版教程(从账号注册到设计应用)

目录 一、Midjourney 介绍 二、Midjourney 的AI出图示例 三、手把手教你上手Midjourney 1、账号&初始化 1.1 账号注册登录 1.2 账号付费 1.3 账号初始化 2、Midjourney的基础设置 3、Midjourney 出图步骤。 (一)直接描述出图 (二)垫图生图。 4、Midjourney的…

安装elasticsearch8.9.0及修改配置

安装es流程 打开文件,添加以下行 vim /etc/sysctl.conf vm.max_map_count=262144重启生效 sysctl -p创建用户 useradd es passwd es修改es目录所属用户 chown -R es:es /opt/elasticsearch-8.9.0如果内存不足,可以修改es的初始化内存和Max内存,修改文件/opt/elasticsearch-8…

C 连接MySQL8

Linux 安装MySQL 8 请参考文章&#xff1a;Docker 安装MySQL 8 详解 Visual Studio 2022 编写C 连接MySQL 8 C源码 #include <stdio.h> #include <mysql.h> int main(void) {MYSQL mysql; //数据库句柄MYSQL_RES* res; //查询结果集MYSQL_ROW row; //记录结…

ruoyi-cloud部署

默认你已经安装mysql&#xff0c;nacos&#xff0c;seata&#xff0c;sentinel等&#xff08;没有的可以先找教程安装&#xff09; 1、下载源码&#xff1a;git clone https://gitee.com/zhangmrit/ruoyi-cloud 2、项目依赖导入&#xff0c;选择自己的maven环境等&#xff0c;创…