数据结构基础介绍

一.起源及重要性

1968 年,美国的高德纳 Donakl E . Kn uth 教授在其所写的《 计算机程序艺术》第一卷《基本算法 》 中,较系统地阐述了数据的逻辑结构和存储结构及其操作, 开创了数据结构的课程体系 ,数据结构作为一门独立的课程,也在计算机科学的学位课程中开始出现。
重要性:
结构程序设计成为程序设计方法学的主要内容,人们越来越重视"数据结构气认为程序设计的实质是对确定的问题选择一种好的结构,加上设计 种好的算法。可见,数据结构在程序设计当中占据了重要的地位。

二.基本概念和术语

所谓数据结构,就是数据和结构
下面我们先来介绍数据的相关概念
数据的定义:
描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识 别,并输入给计算机处理的符号集合 数据不仅仅包括整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。
所谓计算机数据,就是符号,有以下两个要求:
1.可以输入到计算机中
2.能被计算机程序处理
数据元素
是组成数据的、有一 定意义的基本单位,在计 算 机中通常作为整 体处理,也被称为记录。
数据项:
一个数据元素可以自若干个数据项组成。例如:人是一个数据元素,那么人的身高,体重等都是数据项。
数据项是数据不可分割的最小单位 。在数据结构这门课程中,我们把数据项定义为最小单位,是有助于我们更好地解决问题。所以,记住了,数据项是数据的最小单位。但真正讨论问题时,数据元素才是数据结构中建立数据模型的着眼点。就像我们 讨论一 部电影时,是讨论这部电影角色这样的"数据元素",而不是针对这个角色的姓名或者年龄这样的"数据项"去研究分析。
接下来我们再分析结构这个概念:
结构,简单理解就是关系的意思,结构是指各个组成部分相互搭配和排列的方式,在现实世界中,不同数据元素之不是独立的,而是存在特定的关系,我们将这些关系称为结构,那数据结构是什么?
数据结梅:是相互之间存在-种或多种特定关系的数据元素的集舍。
在计算机中,数据元素并不是孤立、杂乱无序的,而是具有内在联系的数据集合。数据元素之间存在的一种或多种特定关系,也就是数据的组织形式 而数据结构就是分析待处理对象的特性及各处理对象之间存在关系

三.数据结构的结构分类

3.1.逻辑结

逻辑结构:是指数据对象中数据元素之间的相互关系
主要分为以下四类:

1.集合结构

定义:

集合结构中的数据元素 同属于一 个集合外,它们之间 没有其他关系。 各个数据元素是"平等'的,它们的共同属性是"同属于一个集合"。数据结构中 的集合关系就类似数学中的集合。

2.线性结构

定义:线性结构之间元素是一一对应的。

3.树形结构

定义: 树形结构中的数据元素之间存在一对多的层次关系

4.图形结构

定义: 图形结构的数据元素是多对多的关系
示意图表示数据的逻辑结构时,要注意两点:
将每一个数据元素看做一 ,用圈圈表 示。
元素之闯的逻辑关系用结点之间的连线表示.如果这个关系是有方向的,那么用带箭头的连续表

3.2.物理结构

又叫存储结构

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

数据元素的存储结构形式有两种:顺序存储和链式存储。

1.顺序存储结构

定义:数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的

2.链式存储结构

定义:链式存储结构是把数据元素存放在任意的存储单元里,这组存储单元可以是连 续的,也可以是不连续的 数据元素的存储关系并不能反映其逻辑关系,因此需要用一个指针存放数据元素的地址,这样通过地址就可以找到相关联数据元素的位置。

3.3逻辑结构与物理结构对比

逻辑结构是针对具体问题的,是为了解决某个问题, 在对问题理解的基础上,选择一个合适的数据结构表示数据元素之间的逻辑关系。
逻辑结构是面向问题的,而物理结构就是面向计算机的,其基本的目标就是将数 据及其逻辑关系 储到计算机的内存中
数据的存储结构应正确反映数据元素之间的逻辑关系,这才是最为关键的,如何储数据元素之间的逻辑关系,是实现物理结构的重点和难点。
最后,本文借鉴了《大话数据结构》这本书,里面的内容对于小白理解数据结构概念性的东西非常好,希望大家可以自行阅读,加深对数据结构理解。

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

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

相关文章

1、springboot项目运行报错

问题1:获取不到配置文件的参数 我的配置文件获取的参数如下: public class Configures{Value("${configmdm.apk.apkName}")private static String apkName;private void setApkName(String apkName) {Configures.apkName apkName;}private …

项目中使用Arrays.asList、ArrayList.subList的坑

使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用&#xff1a; List<Integer> statusList Arrays.asList(1, 2); System.out.println(statusList); System.out.println(statusList.contains(1)); System.out.println(statusList.contains(3)…

spring数据校验

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

【Proteus仿真】【51单片机】定时智能插座开关

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使LCD1602液晶&#xff0c;DS18B20温度传感器、按键、蜂鸣器、继电器开关、HC05蓝牙模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示…

解读 | 为什么有很多名人让人们警惕人工智能

大家好&#xff0c;我是极智视界&#xff0c;欢迎关注我的公众号&#xff0c;获取我的更多前沿科技分享 邀您加入我的知识星球「极智视界」&#xff0c;星球内有超多好玩的项目实战源码和资源下载&#xff0c;链接&#xff1a;https://t.zsxq.com/0aiNxERDq 这个话题总能引起很…

02-Nacos和Eureka的区别与联系

Nacos和Eureka的区别 联系 Nacos和Eureka整体结构类似: 都支持服务注册, 服务拉取, 采用心跳方式对服务提供者做健康监测的功能 区别 Nacos支持服务端主动检测服务提供者状态: 临时实例采用心跳模式,非临时实例采用主动检测模式但对服务器压力比较大(不推荐) 心跳模式: 服务…

电商淘宝爬虫API与淘宝官方开放平台API的区别以及如何选择适合自己的API接口

随着数字化时代的到来&#xff0c;数据已经成为企业竞争力的重要因素。为了获取数据&#xff0c;企业或个人常常需要使用API接口。常见的API接口包括爬虫API和官方开放平台API。本文将详细介绍这两种API接口的区别以及如何选择适合自己的API接口。 一、爬虫API与官方开放平台A…

uniapp uview实现u-popup左侧弹起时铺满屏幕

效果如图: 代码如下: <u-popup :show="sign.signParams.show" mode="left" width="100%" height="100%" border-radius="0":mask-close-able="false">XXXXXXX内容xxxxx</u-popup>使用了 mode=“left”…

SQL 数据操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 语句详解

SELECT INTO、INSERT INTO SELECT 和 CASE 语句详解 SQL SELECT INTO 语句 SELECT INTO 语句将数据从一个表复制到一个新表中。 SELECT INTO 语法 将所有列复制到新表中&#xff1a; SELECT * INTO newtable [IN externaldb] FROM oldtable WHERE condition;只复制一些列到新…

RocketMQ Connect详解

一、概览 RocketMQ Connect是RocketMQ数据集成重要组件&#xff0c;可将各种系统中的数据通过高效&#xff0c;可靠&#xff0c;流的方式&#xff0c;流入流出到RocketMQ&#xff0c;它是独立于RocketMQ的&#xff0c;一个单独的分布式、可扩展、可容错系统&#xff0c; 它具备…

ICC2:low power与pg strategy(pg_std_cell_conn)

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 以low power复杂设计为例,power rail是如何产生的: set pd_list{{DEFAULT_VA VDD_DIG VDD_DIG VSS} {PD_DSP VDD_DIG VDD_DSP VSS} } ;#两个电源域,DEFAULT_VA和PD_DSP是对应voltage area名字,…

Nacos配置管理-配置热更新

目录 一、Nacos配置管理回顾 1.1 统一配置管理 1.1.1 在nacos中添加配置文件 1.1.2 在弹出的表单中&#xff0c;填写配置信息 1.1.3 从微服务拉取配置 1.1.4 在项目中新增一个配置文件bootstrap.yaml&#xff0c;内容如下&#xff1a; 1.1.5 读取nacos配置 1.1.6 效果 二…