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

news/2024/12/22 20:06:47/

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

数据结构(初阶)第二节:顺序表-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.ppmy.cn/news/1404950.html

相关文章

Linux 安装 fail2ban

Linux 安装 fail2ban fail2ban是一款入侵防御软件,能够运行在大多数Linux服务器上,保护计算机服务器免受暴力破解的攻击。fail2ban启动后会通过检测系统行为日志识别暴力破解行为,对于在短时间内多次未能通过身份验证的请求,fail…

【华为OD机试】欢乐的周末(并查集和搜索算法—JavaPythonC++JS实现)

本文收录于专栏:算法之翼 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解代码C/C++题解代码JS题解代码四.代码讲解(Ja…

【算法集训】基础算法:前缀和 | 概念篇

前缀和就是对于顺序表&#xff08;数组、列表&#xff09;来说&#xff0c;计算前面某一段元素的和。 1、部分和 给定一个数组&#xff0c;求某一段子数组的和。 2、朴素做法 int partialSum(int *a, int l, int r) {int i;int s 0;for(i l; i < r; i) {s a[i];}retu…

java Web 辅助学习管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 java Web 辅助学习管理系统是一套完善的信息管理系统&#xff0c;结合java 开发技术和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 前段主要技术 bootstr…

使用docker部署MongoDB数据库

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

【HTML】注册页面制作 案例二

&#xff08;大家好&#xff0c;今天我们将通过案例实战对之前学习过的HTML标签知识进行复习巩固&#xff0c;大家和我一起来吧&#xff0c;加油&#xff01;&#x1f495;&#xff09; 案例复习 通过综合案例&#xff0c;主要复习&#xff1a; 表格标签&#xff0c;可以让内容…

算法错题本

这里写目录标题 错题本注意数据的耦合性对于无解情况的处理思路一组数据以0为结束标记&#xff0c;如何输入到数组中&#xff0c;并计数多个数据进行比较链表删除重复元素的启发循环体里谨慎写类型定义并初始化&#xff08;一般写上就是错&#xff09;队列中读取队尾元素数组当…

Nginx三大常用功能“反向代理,负载均衡,动静分离”

注意&#xff1a;以下案例在Windows系统计算机作为宿主机&#xff0c;Linux CentOS 作为虚拟机的环境中实现 一&#xff0c;Nginx配置实例-反向代理 1.反向代理 案例一 实现效果&#xff1a;使用nginx反向代理&#xff0c;访问 www.123.com 直接跳转到127.0.0.1:8080 准备工…