数据结构初探:揭开数据结构奥秘

news2024/9/28 3:24:50

在这里插入图片描述
🌈个人主页:聆风吟
🔥系列专栏:数据结构、算法模板、汇编语言
🔖少年有梦不应止于心动,更要付诸行动。


文章目录

  • 📋前言
  • 一. 数组结构起源
  • 二. 基本概念和术语
    • 2.1 数据
    • 2.2 数据元素
    • 2.3 数据项
    • 2.4 数据对象
    • 2.5 数据结构
  • 三. 逻辑结构和物理结构
    • 3.1 逻辑结构
    • 3.2 物理结构
  • 四. 数据类型
    • 4.1 数据类型的定义
    • 4.2 抽象数据类型
  • 📝全文总结

📋前言

    💬 文章主要介绍:本系列主要对数据结构的进行由浅入深的讲解,希望对你今后的学习有一定的帮助。如果有发现错误的地方还请在评论区告知,非常感谢!
    📚 系列专栏:本期文章收录在《图解数据结构》,大家有兴趣可以浏览和关注,后面将会有更多精彩内容!
    🎉 欢迎大家关注🔍点赞👍收藏⭐️留言📝



一. 数组结构起源

摘录:
    早期人们都把计算机理解为数值计算工具,就是感觉计算机当然是用来计算的,所以计算机解决问题,应该是先从具体问题中抽象出一个适当的数据模型,设计出一个解此数据模型的算法,然后再编写程序,得到一个实际的软件。可现实中,我们更多的不是解决数值计算的问题,而是需要一些更科学有效的手段(比如表、树和图等数据结构)的帮助,才能更好地处理问题。所以:
    数据结构是一门研究非数值计算的程序设计问题的操作对象,以及他们之间的关系和操作等相关问题。

    1968年,美国的高德纳(Donald E. Knuth)教授在其所写的《计算机程序设计艺术》第一卷《基本算法》中,较系统地阐述了数据的逻辑结构和存储结构及其操作,开创了数据结构的课程体系。同年,“数据结构” 作为一门独立的课程,在计算机科学的学位课程中开始出现。也就是说,那之后计算机相关专业的学生开始接受“数据结构”的“折磨”——其实应该是享受才对。

    之后,20世纪70年代初,出现了大型程序,软件也开始相对独立,结构程序设计成为程序设计方法学的主要内容,人们越来越重视“数据结构”,认为 程序设计的实质是对确定的问题选择一种好的结构,加上设计一种好的算法。可见,数据结构在程序设计当中占据了重要的地位。
在这里插入图片描述



二. 基本概念和术语

2.1 数据

    数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别的,并输入给计算机处理的符号集合。 数据不仅仅包括整形、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。

2.2 数据元素

    数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。 比如在人类中,人是数据元素;在禽兽类中,牛、马、鸡等动物都是禽兽类的数据元素。
在这里插入图片描述

2.3 数据项

    数据项:一个数据元素可以由若干数据项组成。数据项是数据不可分割的最小元素。 比如人这样一个数据元素,可以有眼睛、耳朵、鼻子、嘴巴、手、脚这些数据项,也可以有名字、年龄、性别、家庭地址、联系电话、邮政编码、等数据项,具体有哪些数据项有你来决定。
在这里插入图片描述

2.4 数据对象

    数据对象:是性质相同的数据元素的集合,是数据的子集。其中,性质相同是指数据元素具有相同的数量和类型的数据项。

2.5 数据结构

    以上是关于数据的定义。结构的定义是:不同数据数据元素之间不是相互独立的,而是存在特定关系,我们称这些关系为结构。介绍了数据和结构的定义,那数据结构的定义呢?

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



三. 逻辑结构和物理结构

    按照视点的不同,我们把数据结构分为逻辑结构和物理结构。

3.1 逻辑结构

    逻辑结构:是指数据对象中数据元素的之间的相互关系。逻辑结构分为一下四种:

  1. 集合结构
    集合结构:集合结构中的数据元素除了同属于一个集合外,他们之间没有其他关系。如下图所示:
    在这里插入图片描述

  2. 线性结构
    线性结构:线性结构中的数据元素之间是一对一的关系。如下图所示:
    在这里插入图片描述

  3. 树形结构
    树形结构:树形结构中的数据元素存在一种一对多的层次关系。如下图所示:
    在这里插入图片描述

  4. 图形结构
    图形结构:图形的数据元素是多对多的关系。如下图所示:
    在这里插入图片描述

注意事项: 用示意图表示数据的逻辑时,需要注意一下两点:

  • 将每一个数据元组看作一个结点,用圆圈表示;
  • 元素之间的逻辑关系用结点之间的连线表示,如果这个关系是有方向的,那么用带箭头的连线表示。

3.2 物理结构

    物理结构(在很多书中也称存储结构):是指数据的逻辑结构在计算机中的存储形式。数据元素的存储结构形式有两种:顺序存储和链式存储。

  1. 顺序存储结构
    顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。如下图所示:
    在这里插入图片描述

  2. 链式存储结构
    链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。因为数据元素的存储关系并不能直接反映其逻辑关系,因此需要用一个指针存放数据元素的地址,这样通过地址就可以找到相数据元素的位置。如下图所示:
    在这里插入图片描述



四. 数据类型

    数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称

4.1 数据类型的定义

    数据类型是按照值的不同进行划分的。在高级语言中,每个变量、常量和表达式都有各自的取值范围。类型就是用来说明变量或表达式的取值范围和所能进行的操作。在c语言中,按照值的不同,数据可以分为两类:

  • 原子类型
    原子类型是不可以在分解的基本类型,包括整型、实型、字符型等
  • 结构类型
    结构类型是由若干个类型组合而成,是可以再分解的。例如,整型数组是由若干整型数据组合而成

4.2 抽象数据类型

    抽象数据类型(Abstract Data Type,ADT)是指一个数学模型及定义在该模型上的一组操作。抽象类型的定义取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。

    实际上,抽象数据类型体现了程序设计中问题分解、抽象和信息隐藏的特性。抽象数据类型把实际生活中的问题分解为多个规模小且容易处理的问题,然后建立一个计算机能处理的数据模型,并把每个功能模块的实现细节作为一个独立的单元,从而使具体实现过程隐藏起来。
    抽象数据类型的标准格式:

ADT 抽象数据类型名
Data
  数据元素之间的逻辑关系的定义
Operation
  操作 1
  		初始条件
  		操作结果描述
  操作 2
  		......
  操作 n
  		......
 endADT


📝全文总结

    本文主要讲解了数据结构的起源、基本概念、数据结构的分类等相关基础知识,意在让大家对数据结构有个初步了解,为后面的学习打下基础。

     今天的干货分享到这里就结束啦!如果觉得文章还可以的话,希望能给个三连支持一下,聆风吟的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是作者前进的最大动力!
在这里插入图片描述

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

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

相关文章

点的旋转变换

情形一(active or alibi transformation主动变换) 在坐标系 x − y x-y x−y中,点 p 1 p_1 p1​逆时针旋转 α \alpha α后到达点 p 2 p_2 p2​。 p 1 p_1 p1​在 x − y x-y x−y中的表示与 p 2 p_2 p2​在 x ′ − y ′ x-y x′−y′中的表…

C# Cad2016二次开发HelloWorld(一)

1 新建类库 二 引用 acdbmgd.dll、acmgd.dll、accoremgd.dll 三 HelloWorld代码 public class Class1{/// <summary>/// 程序入口标识/// </summary>[CommandMethod("HelloWorld")]public void HelloWorld(){Document adoc Autodesk.AutoCAD.Applicatio…

将WAP网站封装成App体验的全新策略

一、传统的App封装方式 传统的App封装技术通常依赖于WebView组件&#xff0c;将WAP内容嵌入到一个原生App框架中。这种方法虽然可以快速实现WAP到App的转换&#xff0c;但存在着明显的缺陷&#xff1a;首先&#xff0c;WebView的性能和用户体验都无法与原生组件相提并论&#x…

STM32H5培训(一)总览

文章目录 1. 前言2. STM32H5系列MCU的特点和新功能包括性能提升、新外设和安全功能等3. STM32H5系列型号之间的区别和关键资源对比4. 性能和功能亮点6. 开发生态参考&#xff1a; 1. 前言 本篇主要介绍STM32H5系列MCU的特点和新功能&#xff0c;包括全新的M33内核、250M主频处…

【GNN2】PyG完成图分类任务,新手入门,保姆级教程

上次讲了如何给节点分类&#xff0c;这次我们来看如何用GNN完成图分类任务&#xff0c;也就是Graph-level的任务。 【GNN 1】PyG实现图神经网络&#xff0c;完成节点分类任务&#xff0c;人话、保姆级教程-CSDN博客 图分类就是以图为单位的分类&#xff0c;举个例子&#xff1…

初识 Elasticsearch 应用知识,一文读懂 Elasticsearch 知识文集(1)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

150套简约流行国内外优秀网页模板打包 /个人主页网站html模板 /html+css网页设计源码(分享)

这里把自己收藏的最新150套简约流行国内外优秀网页模板打包分享给大家&#xff0c;如果有用请点赞收藏&#xff0c;无密源码&#xff0c;直接拿来就可以用的。它是htmlcss网页设计源码&#xff0c;html5网页静态模板。 我分了品类&#xff0c;按行业或应用场景&#xff0c;不但…

unity C#深拷贝、浅拷贝、直接赋值区别与经典实例

文章目录 浅拷贝深拷贝浅拷贝和直接赋值有啥区别 在C#中&#xff0c;浅拷贝&#xff08;Shallow Copy&#xff09;和深拷贝&#xff08;Deep Copy&#xff09;是两种不同级别的对象复制方式。它们的区别主要体现在处理引用类型字段时的行为。 浅拷贝 浅拷贝是指复制对象时&…

git修改历史(非最新)提交信息

二、修改最近第二次或更早之前的commit信息 当前有三次提交&#xff0c;从近到远分别为1、2、3 以修改第2次提交为例&#xff08;从最新往前数&#xff09; 1、使用命令git rebase -i HEAD~2 按i进入编辑模式&#xff0c;将对应的pick改为edit&#xff0c;然后ctrlc退出。最…

如何用ChatGPT写教案设计?以“沁园春雪”为例

1. 引言 随着人工智能技术的飞速发展&#xff0c;ChatGPT已成为教育领域的一大创新工具。ChatGPT不仅能够模拟人类对话&#xff0c;还可以帮助设计互动丰富、内容丰富的教案。本文将探索如何利用ChatGPT进行教案教学设计&#xff0c;特别是通过“沁园春雪”这一案例&#xff0…

版本控制系统教程

1.Git的基本介绍 1.1 Git的概念 Git是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目.Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件.Git与常用的版本控制工具CVS&#xff0c;Subversion等不同&#xff…

Vue-17、Vue人员列表过滤(案例)

1、watch实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>列表渲染过滤</title><script type"text/javascript" src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.js&qu…

恭喜:ChatGPT之父与相恋多年的男友结婚,并希望早日生娃。。。

OpenAI CEO Sam Altman与伴侣Oliver Mulherin海边私密婚礼&#xff1a;爱情、事业与人工智能领域的交织 婚礼主持人是奥特曼的兄弟杰克奥尔特曼 壹.媒体流传 在科技界掀起波澜的OpenAI首席执行官萨姆奥尔特曼&#xff08;Sam Altman&#xff09;&#xff0c;近期与他长久以来的…

Linux第27步_在虚拟机中安装“设备树编译工具”

设备树英文名字叫做Device tree&#xff0c;用来描述板子硬件信息的&#xff0c;比如开发板上的 CPU有几个核 、每个CPU核主频是多少&#xff0c;IIC、SPI这些外设的寄存器范围是多少&#xff0c;IIC接口下都挂了哪些设备等等。 设备树文件是一种文本格式的文件&#xff0c;方…

VirtualBox安装linuxmint-21.2虚拟机并配置网络

VirtualBox安装linuxmint-21.2虚拟机并配置网络 适用于在VirtualBox平台上安装linuxmint-21.2虚拟机。 1. 安装准备 1.1 安装平台 Windows 11 1.2. 软件信息 软件名称软件版本安装路径Oracle VM VirtualBoxVirtualBox-7.0.12-159484D:\softwareCentOS7CentOS-7.9.2009E:\…

华为路由器OSPF动态链路路由协议配置

R1配置 interface GigabitEthernet0/0/0ip address 10.1.12.1 255.255.255.252 interface LoopBack0ip address 1.1.1.1 255.255.255.255 ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 1.1.1.1 0.0.0.0 network 10.1.12.0 0.0.0.3 R2配置 interface GigabitEthernet0/0/0i…

精细微调技术在大型预训练模型优化中的应用

目录 前言1 Delta微调简介2 参数微调的有效性2.1 通用知识的激发2.2 高效的优化手段3 Delta微调的类别3.1 增量式微调3.2 指定式微调3.3 重参数化方法 4 统一不同微调方法4.1 整合多种微调方法4.2 动态调整微调策略4.3 超参数搜索和优化 结语 前言 随着大型预训练模型在自然语…

[Beego]1.Beego简介以及beego环境搭建,bee脚手架的使用,创建,运行项目

一.Beego介绍 Beego是一个开源的基于Golang的MVC框架&#xff0c;主要用于Golang Web开发,Beego可以用来快速开发API、Web、后端服务等各种应用。 Golang 的Web开发框架有很多,从 github star 数量来看Gin>Beego>lris>Echo>Revel>Buffalo 目前国内用的比较多的就…

详解Skywalking 服务Overview页面的参数含义(适合小白)

本文针对刚刚接触skywalking的同学&#xff0c;重点讲解服务Overview页面中各个参数的含义&#xff0c;为大家快速上手skywalking会起到帮助作用&#xff01; 最重要的三个指标 Service Apdex&#xff08;数字&#xff09;:当前服务的评分 Successful Rate&#xff08;数字&a…

VS报错:error:LNK2005 _main 已经在 *.obj 中定义

应该是重定义了&#xff0c;但是又解决不了&#xff0c;看似又没有重定义啊&#xff0c;就在一个文件定义了啊&#xff1f;怎么会出现这种情况呢&#xff1f;关键是&#xff0c;编译报错&#xff0c;程序运行不了了。 这里提一下我的前期操作&#xff0c;是因为将一个头文件和…