数据结构(初阶)第一节:数据结构概论

本篇文章是对数据结构概念的纯理论介绍,希望系统了解数据结构概念的友友可以看看,对概念要求不高的友友稍做了解后移步下一节:

数据结构(初阶)第二节:顺序表-CSDN博客

正文

目录

正文

1.数据结构的相关概念

1.1什么是数据

1.2什么是数据结构

1.3为什么需要数据结构

1.4数据结构的分类

逻辑结构

集合结构

线性结构

树形结构

图形结构(网状结构)

物理结构


1.数据结构的相关概念

1.1什么是数据

        数据是对客观事物的表示,在计算机科学中表示被输入到计算机中被计算机处理的符号的总称。

1.2什么是数据结构

        数据结构是计算机存储、组织数据的⽅式。数据结构是指相互之间存在⼀种或多种特定关系的数据元素的集合。数据结构反映数据的内部构成,即数据由那部分构成,以什么⽅式构成,以及数 据元素之间呈现的结构。

1.3为什么需要数据结构

        在程序运行的是如果不对数据进行有效的管理,就可能会导致数据的丢失、损坏等,还有可能会破坏程序中的其他部分(如野指针),而为了有效管理组织数据,数据结构的概念由此诞生。而数组就是最基础的数据结构。

1.4数据结构的分类

        一般来说,数据结构结构可分为逻辑结构物理结构两大类。

逻辑结构

        数据结构之间的关系代表某种含义,这种自然或人为定义的“关系”成为数据元素之间的逻辑关系,相应的结构被称为逻辑结构,数据元素之间基本的逻辑结构有以下4种类型

集合结构

数据元素同属于一个集合,但不同的元素之间没有任何的对应关系

线性结构

数据元素之间存在一对一的关系,如线性表、栈、队列等

树形结构

数据元素之间存在一对多的关系,包括树、二叉树等

图形结构(网状结构)

数据元素之间存在多对多的关系,如有向图、无向图、带权图和无权图等

物理结构

        物理结构是数据在计算机内存中存储的形式,物理结构需要体现的是数据元素在内存中存储的形式以及结构,基本的物理结构可分为以下4种类型。

1.顺序存储结构:将数据元素放在地址连续的内存空间里

特点:

        1) 占用一大片连续内存空间

        2) 不需要额外空间存储逻辑关系,总空间需求最少

        4) 可顺序访问,支持随机访问

        5) 在C语言中,通过数组实现

        6) 数据元素的插入和删除操作通过移动元素完成

2.链式存储结构:数据元素在内存中的地址不要求连续,但一定要有逻辑结构,各个元素之间通过指针建立联系

特点:

        1) 不要求占用连续内存空间

        2) 不仅要存储数据,还要存储数据之间的关系,故总空间需求较大

        3) 通过指针反映逻辑关系

        4) 逻辑连续,物理可不连续

        5) 只可顺序访问,不支持随机访问

        6) 存在标记:头指针

        7) 数据元素的插入和删除操作通过修改指针完成:定位插入点/删除点的直接前驱/后

3.索引存储结构:

特点:

        1) 不要求占用连续内存空间

        2) 不仅要存储数据,还要存储关系,故总空间需求较大

        3) 通过索引表记录逻辑关系

        4) 逻辑连续,物理可不连续

        5) 可顺序访问,支持随机访问

        6) 数据元素的插入和删除操作通过修改索引表中相关数据元素的存储地址进行

        7) 需要额外存储空间:通过索引表存储逻辑关系

  8) 需要额外操作时间:对索引表进行维护

4.散列存储结构:

特点:

        1) 物理位置通过哈希函数计算得到

        2) 逻辑连续,物理可不连续

        3) 可顺序访问,由于存在冲突,仅支持部分随机访问

        4) 重点:散列函数和解决冲突方法

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

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

相关文章

Word的”交叉引用“和”插入题注“快捷键设置

Word的”交叉引用“和”插入题注“快捷键设置 在MSWord2021中,可以自定义设置快捷键。方法如下:文件-选项-自定义功能区-键盘快捷方式(自定义)。具体过程如图所示。 最后,按照上述流程将插入题注(Insert…

Node | Node.js 版本升级

目录 Step1:下载 Step2:安装 Step3:换源 发现其他博客说的 n 模块不太行,所以老老实实地手动安装 Step1:下载 Node 中文官网:https://nodejs.cn/download 点击后,将会下载得到一个 .msi 文件…

全志 Linux Qt

一、简介 本文介绍基于 buildroot 文件系统的 QT 模块的使用方法: • 如何在 buildroot 工具里编译 QT 动态库; • 编译及运行 qt_demo 应用程序; • 适配过程遇到的问题。 二、QT动态库编译 在项目根路径执行 ./build.sh buildroot_menuc…

go连接数据库(原生)

根据官网文档 Go Wiki: SQL Database Drivers - The Go Programming Language 可以看到go可以连接的关系型数据库 ​ 常用的关系型数据库基本上都支持,下面以mysql为例 下载mysql驱动 打开上面的mysql链接 GitHub - go-sql-driver/mysql: Go MySQL Driver i…

QT5-qmediaplayer播放视频及进度条控制实例

qmediaplayer是QT5的播放视频的一个模块。它在很多时候还是要基于第三方的解码器。这里以Ubuntu系统为例,记录其用法及进度条qslider的控制。 首先,制作一个简单的界面文件mainwindow.ui: 然后,下载一个mp4或其他格式视频&#x…

C语言 | Leetcode C语言题解之第5题最长回文子串

题目&#xff1a; 题解&#xff1a; char* longestPalindrome(char* s) {int lenstrlen(s),max0;int p0;for(int i0;i<len;i)//这种是判断奇数回文{int lefti-1,righti1;//left左边&#xff0c;right右边while(left>0&&right<len&&s[left]s[right]){/…

是否有替代U盘,可安全交换的医院文件摆渡方案?

医院内部网络存储着大量的敏感医疗数据&#xff0c;包括患者的个人信息、病历记录、诊断结果等。网络隔离可以有效防止未经授权的访问和数据泄露&#xff0c;确保这些敏感信息的安全。随着法律法规的不断完善&#xff0c;如《网络安全法》、《个人信息保护法》等&#xff0c;医…

Linux提权!!!

上一篇文章讲了Windows的提权&#xff0c;那么这篇文章就来讲一下Linux的提权 1.SUID提权 suid权限 作用&#xff1a;让普通用户临时拥有该文件的属主的执行权限&#xff0c;suid权限只能应用在二进制可执行文件&#xff08;命令&#xff09;上&#xff0c;而且suid权限只能设置…

基于Springboot会员制医疗预约服务管理信息系统

采用技术 基于Springboot会员制医疗预约服务管理信息系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 功能清单 系统功能 首页 医院信息 坐诊信息…

大模型prompt技巧——思维链(Chain-of-Thought)

1、Zero-shot、One-shot、Few-shot 与fintune prompt的时候给出例子答案&#xff0c;然后再让模型回答。 2、zero-shot-CoT “Let’s think step by step”有奇迹效果 3、多数投票提高CoT性能——自洽性&#xff08;Self-consistency&#xff09; 多个思维链&#xff0c;然后取…

使用docker部署MongoDB数据库

最近由于工作需要搭建MongoDB数据库&#xff1a;将解析的车端采集的数据写入到数据库&#xff0c;由于MongoDB高可用、海量扩展、灵活数据的模型&#xff0c;因此选用MongoDB数据库&#xff1b;由于现公司只有服务器&#xff0c;因此考虑容器化部署MongoDB数据&#xff0c;特此…

微信开发工具——进行网页授权

微信开发工具——进行网页授权 微信公众平台设置 1.在首页创建好自己的订阅号 网站&#xff1a;https://mp.weixin.qq.com/ 点击立即注册,在选择订阅号&#xff08;个人创建使用&#xff09; 之后按流程填写后&#xff0c;点击设置与开发-------->基本配置&#xff0c;这…