数据结构基础介绍

news2024/12/23 8:08:17

一.起源及重要性

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

二.基本概念和术语

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

三.数据结构的结构分类

3.1.逻辑结

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

1.集合结构

定义:

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

2.线性结构

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

3.树形结构

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

4.图形结构

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

3.2.物理结构

又叫存储结构

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

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

1.顺序存储结构

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

2.链式存储结构

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

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

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

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

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

相关文章

基于单片机的定时插座在智能家居中的应用

近年来,随着科学技术的发展迅速,人们对智能化的要求越来越高。越来越多的智能化产品进入千家万户,如电脑电视、扫地机器人、智能空气净化器等。这些家居电器和电子产品大都需要连接电源,为满足多种用电器的正常使用,延…

LeetCode力扣每日一题(Java):58、最后一个单词的长度

一、题目 二、解题思路 1、我的思路 先将字符串转换成字符数组 由于我们需要获取最后一个单词的长度,所以我们从后往前遍历字符数组 我们还需判断所遍历的字符是不是字母,即判断每个字符对应的ASCII值即可,用计数器count来储存单词长度 …

sudo -i 和 sudo -s

一、sudo xxx 以root权限执行单条命令 二、sudo -i 进入一个持续的root环境,以root权限执行命令,但并不是切换到root用户 三、sudo -s 也是进入一个持续的root环境,以root权限执行命令,和sudo -i的区别是保存了原来普通用…

记录 DevEco 开发 HarmonyOS 应用开发问题记录 【持续更新】

HarmonyOS 应用开发问题记录 HarmonyOS 应用开发问题记录一、预览器无法成功运行?如何定位预览器无法编译问题? 开发遇到的问题 HarmonyOS 应用开发问题记录 一、预览器无法成功运行? 大家看到这个是不是很头疼? 网上能看到许多方案,基本都是关闭一个配置 但是他们并…

在线课堂知识付费小程序源码系统 开发组合PHP+MySQL:用手机随时随地地学习,讲师亲自在线授业解惑 带安装部署教程

近年来,人们对于学习的需求也日益增加。传统的课堂教学已经无法满足人们的学习需求,而在线课堂则能够让人们随时随地地进行学习。同时,随着知识付费的兴起,越来越多的讲师也愿意将自己的知识和经验分享给更多的人。因此&#xff0…

【QT入门】基础知识

一.认识Qt qt是一套应用程序开发库,与MFC不同是跨平台的开发类库,主要用来开发图形界面。完全面向对象容易扩展。 优点:1.封装性强,简单易学 2.跨平台 3.独立编译为本地代码 二.qt工程 1.常见的工程文件有这两种…

PDF文件的限制编辑,如何设置?

想要给PDF文件设置一个密码防止他人对文件进行编辑,那么我们可以对PDF文件设置限制编辑,设置方法很简单,我们在PDF编辑器中点击文件 – 属性 – 安全,在权限下拉框中选中【密码保护】 然后在密码保护界面中,我们勾选【…

DevEco Studio 生成HPK文件

DevEco Studio 生成HPK文件 一、安装环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、生成HPK文件 生成的HPK文件存放在entry文件夹下。下图是未生成HPK的样式。 生成HPK:菜单Build->Build Hap(s)/APP(s)->Build Hap(s)…

JavaFx实现图片轮播(二)

上一篇轮播文章发布后&#xff0c;很多人私信我能不能像网页效果一样显示轮播图呢&#xff1f; 那么本篇文章就给大家上实现代码&#xff0c;好了废话不多说&#xff0c;代码如下&#xff1a; fxml文件&#xff1a; <?xml version"1.0" encoding"UTF-8&qu…

MySQL InnoDB Replication部署方案与实践

1. 概述 MySQL Innodb ReplicaSet 是 MySQL 团队在 2020 年推出的一款产品&#xff0c;用来帮助用户快速部署和管理主从复制&#xff0c;在数据库层仍然使用的是主从复制技术。 ReplicaSet 主要包含三个组件&#xff1a;MySQL Router、MySQL Server 以及 MySQL Shell 高级客户…

酷开科技多维度赋能营销,实力斩获三项大奖

在数智化新阶段、广告新生态、传播新业态的背景下&#xff0c;“第30届中国国际广告节广告主盛典暨网易传媒态度营销峰会”于11月18日在厦门国际会展中心盛大举行。来自全国的品牌方、战略决策者、媒体平台和品牌服务机构等汇聚一堂。在50000&#xff0b;现场观众和数千万线上观…

基于SpringBoot的就业信息管理系统设计与实现(源码+数据库+文档)

摘 要 在新冠肺炎疫情的影响下&#xff0c;大学生的就业问题已经变成了一个引起人们普遍重视的社会焦点问题。在这次疫情的冲击之下&#xff0c;大学生的就业市场的供求双方都受到了不同程度的影响&#xff0c;大学生的就业情况并不十分乐观。目前&#xff0c;各种招聘平台上…

C语言经典错误总结(一)

注&#xff1a;本文是结合《C陷阱和缺陷》所写&#xff01; 一.和 我们都知道在C语言中表示赋值操作符&#xff0c;表示比较&#xff0c;那么你知道为啥单等号为&#xff0c;双等号为比较吗&#xff1f; 这里扩展下&#xff1a;因为在C语言中赋值操作符相对于比较符号较常出…

【EI征稿中|JPCS独立出版】第七届机械、电气与材料应用国际学术会议(MEMA 2024)

第七届机械、电气与材料应用国际学术会议&#xff08;MEMA 2024&#xff09; 2024 7th International Conference on Mechanical, Electrical and Material Application (MEMA 2024) 2024年2月23-25日 长沙 MEMA会议属一年一度的国际学术盛会。因其影响力及重要性&am…

刷题第四十天 198.打家劫舍 213.打家劫舍Ⅱ 337. 打家劫舍Ⅲ

class Solution:def rob(self, nums: List[int]) -> int:#dp 偷到第i个房间&#xff0c;最多偷了多少钱#dp[i] max(dp[i - 1], dp[i - 2] nums[i])if len(nums) 1:return nums[0]if len(nums) 2:return max(nums[0], nums[1])dp [0] * (len(nums))dp[0] nums[0]dp[1] …

TestCase与TransactionTestCase的区别

目录 一、概述 二、区别 1、事务管理方式 2、性能影响 3、适用场景 三、示例代码 TestCase示例代码 TransactionTestCase示例代码 四、总结 TestCase与TransactionTestCase是Django框架中两个重要的测试类&#xff0c;用于对数据库操作进行测试。在编写测试用例时&…

SMART PLC开关量防抖滤波器

博途S7-1200PLC开关量防抖滤波器请查看下面文章链接: https://rxxw-control.blog.csdn.net/article/details/134936233https://rxxw-control.blog.csdn.net/article/details/134936233PLC系统自带的DI滤波器只能滤除一些高频干扰信号,对于一些物体检测,检测开关可能在物体边…

【头歌系统数据库实验】实验8 SQL的复杂多表查询-2

目录 第1关&#xff1a;基于派生表查询每个队员解答中超过他平均memory的user_id及题目编号problem_id 第2关&#xff1a;用ANY/ALL实现查询2019级选手&#xff08;user_id前4位为2019&#xff09;满足比2020级其中一个选手注册时间早即可的选手 第3关&#xff1a;用聚集查询…

使用Windows10的OneDrive应用程序,让文件管理上一个台阶

这篇文章解释了如何通过在文件资源管理器和OneDrive应用程序之间轮换&#xff0c;将OneDrive与Windows 10一起使用。 使用文件资源管理器进行组织 你不必将所有OneDrive文件都保存在硬盘上&#xff0c;事实上&#xff0c;你可以将任意数量的文件留在云中&#xff08;也就是微…

精通 JavaScript 数据处理大全:手写代码从入门到精通

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;JavaScript篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript- 数据处理 目录 1. 实现日期格式化函数 2. 交换a,b的值&#xff0c;不…