【数据结构1】数据结构的基本概念

news2024/9/21 16:17:33

数据结构的基本概念

数据:数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。数据是计算机程序加工的原料。

数据元素、数据项:数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位

要根据实际的业务需求来确定什么是数据元素、什么是数据项
以微博账号为例
在这里插入图片描述

数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合
数据对象:是具有相同性质的数据元素的集合,是数据的一个子集

以海底捞排队系统为例
数据元素:
在这里插入图片描述
数据结构:某个特定门店的排队顾客信息和它们之间的关系
在这里插入图片描述
数据对象:全国所有门店的排队顾客信息
在这里插入图片描述


数据结构的三要素

逻辑结构、物理结构(存储结构)、数据的运算

逻辑结构——数据元素之间的逻辑关系是什么

  • 集合:各个元素同属一个集合,别无其他关系
    在这里插入图片描述

  • 线性结构:数据元素之间是一对一的关系,除了第一个元素,所有元素都有唯一前驱;除了最后一个元素,所有元素都有唯一后继
    在这里插入图片描述

  • 树形结构:数据元素之间是一对多的关系
    在这里插入图片描述

  • 图结构:数据元素之间是多对多的关系
    在这里插入图片描述

物理结构(存储结构)——如何用计算机表示数据元素的逻辑关系

  • 顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现

  • 链式存储:逻辑上相邻的元素在物理位置上可以不相邻,借助指向元素存储地址的指针来表示元素之间的逻辑关系

  • 索引存储:在存储元素信息的同时,还建立附加的索引表。索引表中的每项称为索引项,索引项的一般形式是(关键字,地址)
    在这里插入图片描述

  • 散列存储: 根据元素的关键字直接计算出该元素的存储地址,又称哈希存储

数据的运算

数据的运算——施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。

逻辑结构——线性结构(队列)
结合现实需求定义队列这种逻辑结构的运算:

  1. 队头元素出队
  2. 新元素入队
  3. 输出队列长度

存储结构——顺序、链式
在这里插入图片描述
顺序结构插入元素: 将新元素放到数据结构的末尾
链式结构插入元素:将新元素放到任意位置,使用指针把新元素连接到数据结构末尾

数据类型、抽象数据类型

数据类型:数据类型是一个值的集合和定义在此集合上的一组操作的总称。

  1. 原子类型。其值不可再分的数据类型。(int、bool)
  2. 结构类型。其值可以再分解为若干分量的数据类型(struct)

抽象数据类型(Abstract Data Type,ADT) 是抽象数据组织及与之相关的操作。
ADT用数学化的语言定义数据的逻辑结构、定义运算。与具体的实现无关。只有当用计算机实际实现的时候才需要考虑使用哪种物理结构

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

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

相关文章

以太网 TCP协议(TCP交互过程中出现丢包时的解决机制-列举部分)

2.7.3 以太网 TCP协议(TCP交互过程中出现丢包时的解决机制-列举部分) 参考:CSDN_TCP的重传机制_博主.Pr Young,对描述进行了整理与结合个人的理解进行编写。 一、超时重传机制 在发送数据时,设定一个定时器&#xff0c…

Ubuntu下cmake使用入门

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件。其包含自己的语法结构,只要按照其语法编写成CMakeLists.txt,然后camke程序就能对…

MAML:User Diverse Preference Modeling by Multimodal AttentiveMetric Learning

一、摘要 大多数现有的推荐系统用特征向量表示用户的偏好,当预测该用户对不同项目的偏好时,假设该特征向量是固定的。然而,同一个向量不能准确地捕捉用户对所有项目的不同偏好,特别是在考虑各种项目的不同特征时。为了解决这个问…

【应用】Kubernetes

Kubernetesk8s 安装流程安装前配置安装 docker 以及 k8s 组件初始化 k8s 集群测试使用:安装 kubernetes-dashboardk8s 基础概念k8s 核心技术概念k8s 内部组件k8s 中的 IP 地址K8S 服务暴露的三种方式k8s 安装流程 k8s-masterk8s-node01k8s-node02192.168.86.140192…

【编程题】【Scratch四级】2022.09 三个数排序

三个数排序 输入三个数,比较三个数的大小,并将这三个数按照从小到大的顺序说出。 1. 准备工作 (1)保留小猫角色,默认位置; (2)白色背景。 2. 功能实现 (1&#xff…

Java基于SSM框架的教室预约申请管理系统 毕业设计

本教室管理系统主要包括系统用户管理模块、楼层信息管理模块、校内新闻管理、教室信息管理、登录模块、和退出模块等多个模块。它帮助教室管理实现了信息化、网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了教室管理数据资源,有效的减少了教室管理的…

四旋翼无人机学习第13节--Padstack Editor的简单使用

文章目录0 前言1 绘制MP2120 QFN10封装焊盘(初步学习)1.1 数据手册确定焊盘种类1.2 软件设置焊盘11.3 软件设置焊盘22 绘制DM9000A LQFP48L封装焊盘(初步学习)2.1 数据手册确定焊盘种类2.2 软件设置焊盘3 绘制STC89C51 PDIP-40封装通孔焊盘(初步学习)3.1 数据手册确定焊盘种类3…

【Spring源码系列】Bean生命周期-Bean销毁

前言 Spring给我们提供了一种当bean销毁时调用某个方法的方式。那么,Spring底层到底是如何实现的呢?接下来,我们将从源码案例的方式来解析:spring如何实现当bean销毁时调用某个方法的。 一、Bean销毁介绍 bean销毁的时机 当sp…

[附源码]计算机毕业设计springboot智能衣橱APP

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

数据增强 - 当数据有限时如何使用深度学习(一)

本文是对图像的深度学习数据增强技术的全面综述前言我们都遇到过这种情况:您有一个可以使用机器学习模型实现的机会,但当您打开网络浏览器并搜索相关数据,很有可能,您会发现一个只有几百张图像的数据集。您记得最受欢迎的数据集的…

【项目_03】日历的回显、搭建热门精选、下拉加载更多、搜索框搭建 | 基于Vue3全家桶

💭💭 ✨: 日历的回显、搭建热门精选、下拉加载更多、搜索框搭建 | 旅途拾景   💟:东非不开森的主页   💜: 心若有所向往,何惧道阻且长💜💜   🌸: 如有错误或不足之处&…

Android入门第38天-使用随鼠标移动的圆点来熟悉onTouchEvent

简介 平时包括之前的例子大量是基于TouchListener如:onClick这种一类的事件。 今天给大家带来的是TouchListener与OnTouchEvent的比较,以及多点触碰的知识点! TouchListener是基于监听的,而OnTouchEvent则是基于回调的&#xff…

SNMP协议——网络管理概述

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.网络管理概述 1.网络管理概念 2.网络管理功能 1.配置管理 …

Xshell连接如何记住用户秘钥文件

场景描述 服务器ssh登录有2种常用的方式: 方式1:用户密码认证,登录时输入用户名和密码。方式2:公钥认证(Public Key User Authentication),登录时提供用户名私钥。公钥需要存储一份在服务器上该用户的~/.ssh/authori…

是德科技DSOX2002A型号示波器的使用

文章目录图使用自检电路单次触发按键恢复出厂设置水平调整区水平位移调整按钮水平时机调整旋钮垂直调整区通道启用按钮垂直档位调节旋钮垂直位移调整旋钮测量区图 使用 自检 黑色鳄鱼夹接地,伸缩探钩挂到左侧。 按下auto按键 使用测量按键可以调出波形的峰峰值与频…

Redis (持续更新…)

提到这个词,脑海里一连串:它是什么,能干什么,怎么干的,不用它行不行,有没有同类…… 其实就是5W2H,或者说凡事多问个为什么 先放官网: ​​​​​​Redis CRUG网站 它是开源存储…

非零基础自学Golang 2 开发环境 2.5 第一个Go 程序

非零基础自学Golang 学习文档地址:https://www.topgoer.cn/ 本文仅用于学习记录,不存在任何商业用途,如侵删【已联系过文档作者】 文章目录非零基础自学Golang2 开发环境2.5 第一个Go 程序2.5.1 Hello World2 开发环境 2.5 第一个Go 程序 2…

IDEA创建Java Web项目

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…

【电商】跨境电商「保税」业务(附支付宝、微信对接指南)

​电商作为产品的一个大类,很多业务相关的东西都比社交、工具类产品更为复杂;而且涉及到经济、支付等环节,让很多新人头疼不已。这篇文章作者从跨境电商的「保税」业务出发,以支付宝、微信的对接为例,为你详解跨境电商…

Python之面向对象

目录 一、类的定义 二、魔法方法 三、属性管理 四、封装 五、继承&多态 一、类的定义 # 类封装 class Dog:name"修狗"age3dDog() print(fname is {d.name} ,age is {d.age}) # python与java关于类封装的区别 d.sex"母" print(fname is {d.name} ,…