和你一起从零开始学习计算机相关知识(一) 带你走进数据结构

本文主要是介绍和你一起从零开始学习计算机相关知识(一) 带你走进数据结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

和你一起从零开始学习计算机相关知识(一) 带你走进数据结构

文章目录

  • 前言
  • 一 数据结构
    • 1.1 基本概念
      • 1.1.1 数据
      • 1.1.2 数据元素
      • 1.1.3 数据项
      • 1.1.4 数据对象
      • 1.1.5 数据结构
    • 1.2 逻辑结构 和 物理结构
      • 1.2.1 逻辑结构
      • 1.2.2 物理结构
    • 1.3 数据类型
      • 1.3.1 数据类型定义
      • 1.3.2 抽象数据类型
    • 总结与后记

前言

在工作,我们往往提交代码,结果开发经理拍着桌子问你:“你的数据结构咋学的?为啥有简单的不用?”
那么数据结构是什么?让我们一起走进数据结构

一 数据结构

首先我们需要思考:
什么是数据结构?

在你的印象中数据结构应该是什么?

1.1 基本概念

1.1.1 数据

数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。
数据有2个前提:
1.可以输入到计算机中
2.能被计算机处理
数据

1.1.2 数据元素

数据元素:是组成数据、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。

列如:在人类中,每个人就是数据元素;在动物中,每种动物都是数据元素。

1.1.3 数据项

数据项:一个数据元素可以由诺干个数据项组成。

在人这个数据元素中,人体的各个器官就是数据项,同样人的家庭住址,电话,年龄等等也是数据项,这就是需要根据你的系统所需维度所决定的。

数据项是数据不可分割的最小单位。
在这里插入图片描述

1.1.4 数据对象

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

性质相同是指数据元素具有相同数量和类型的数据项,比如,人都有姓名。性别,年龄等相同的数据项。

1.1.5 数据结构

在搞清楚数据结构之前,我们要明白, 什么是结构?

不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系称为结构。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。

1.2 逻辑结构 和 物理结构

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

1.2.1 逻辑结构

逻辑结构:是指数据对象中数据元素之间的相互关系。

逻辑结构分为以下4中:
1.集合结构
在这里插入图片描述

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

线性结构中的数据元素之间是一对一的关系。
3.树形结构
在这里插入图片描述

树形结构中的数据元素之间存在一对多的层次关系。
4.图形结构
在这里插入图片描述图形结构

图形结构的数据元素是多对多关系。

从上面的例子中可以看出,逻辑结构是针对具体问题的,是为了解决某个问题,在对问题理解的基础上,选择一个合适的数据结构表示数据元素之间的逻辑关系。

1.2.2 物理结构

说完了逻辑结构,我们再来说说物理结构

物理结构:是指数据的逻辑结构在计算机中的存储形式。

物理结构也被叫做存储结构,数据元素的存储结构形式有2种:顺序存储链式存储

1.顺序存储结构
顺序存储结构:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。

顺序存储如同人排队一样,每个人都占据一个空间,数组就是一个典型的顺序存储。

2.链式存储结构

链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。

数据元素的存储关系并不能反映其的逻辑关系,因此需要用一个指针来存放数据元素的地址,这样通过地址就可以找到相关联的数据元素的位置。

3.两者的区别

逻辑结构是面向问题的,而物理结构就是面向计算机的,其基本的目表是将数据及其逻辑关系存储到计算机的内存里。

在这里插入图片描述

1.3 数据类型

数据类型:是指一组性质相同的值的集合级定义再ci集合上的一些操作的总称。

1.3.1 数据类型定义

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

说白了就是为了给变量下定义,约束其的范围,和其所能做的操作。

我以c语言举例:
在c语言中,按照取值不同,可以分为两类:
1.原子类型:
是不可以再分解的类型。包含整数、实型、字符型等等。
2.结构类型 :
有若干个类型组合而成的,是可以再分解的。
例如:整形数组是有若干个整形数据组成的。

比如 ,在c语言中变量声明int a ,b, 这就意味着给变量a,b 赋值时只能是int类型的,不能超过int的取值范围 ,变量a和b之间的运算也只能是int类型所允许的运算。

1.3.2 抽象数据类型

为了把各种程序语言转化成底层语言,我们对已有的的数据类型进行抽象,就有了抽象数据类型。

那么,抽象是啥呢?
抽象是指抽取出事物具有的普遍性的本质。

抽象数据类型(Abstract Data type , ADT) :
一个数据模型及定义在该模式上的一组操作

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

描述抽象数据类型的标准格式:

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

总结与后记

今天,我们学习了数据结构的一些相关概念,给出了数据结构的定义,数据结构是相互之间存一种或多种特定关系的数据元素集合。同样是结构,从不同的角度来讨论,会有不同的分类。

这篇关于和你一起从零开始学习计算机相关知识(一) 带你走进数据结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/358122

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学