首页 > 其他分享 >什么是数据结构

什么是数据结构

时间:2023-08-18 15:58:17浏览次数:32  
标签:存储 什么 元素 数据结构 数据 节点 结构

一、数据结构的起源

1968年,美国高德纳教授,《计算机程序设计艺术》第一卷《基本算法》提出,开创了数据结构与算法的先河

数据结构是一门研究数据之间关系、操作的学科,而非计算数据方法

数据结构 + 算法 = 程序 揭露了程序的本质,沃思凭借这个观点获得了图灵奖

二、数据结构中的基本概念

数据:任何能够输入到计算机中,能被程序处理的描述客观事物的符号

数据项:有独立含义的最小单位,也叫做 数据域、域

数据元素:组成数据的、有一定意义的基本单位,也叫做节点、结点、顶点; 一个数据元素是由若干项数据项组成

数据结构:相互之间存在一种或多种特定关系的数据元素的结合

算法:数据结构中所具备的功能,能够解决某种问题的方法

三、研究数据结构的三个方面

数据的逻辑结构:一对一 一对多 多对多

数据的存储结构(物理结构):顺序存储、链式存储

数据结构的运算

四、数据的逻辑结构

集合:数据元素同处于同一个集合中,但是元素之间没有任何关系

线型结构(表):数据元素之间存在一对一的关系

树型结构(树): 数据元素之间存在一对多的关系

图型结构(图): 数据元素之间存在多对多的关系

五、数据的存储结构\物理结构

顺序结构

数据元素是存储在连续的内存中,用数据元素的相对位置来表示数据元素之间的关系,内存空间是连续的,并且数据元素之间也要确保连续

优点:支持随机访问,访问效率极高,适合查找数据,不容易产生内存碎片

缺点:对数据元素的插入、删除操作效率低、实现不方便,对内存的要求较高

链式结构

数据元素存储在彼此独立的内存空间中,每个独立的元素称为节点,每个节点中额外增加一块指针域,通过该指针可以指向下一个与该节点有关系的节点,以此来表示数据节点之间的关系

优点:对节点的删除、插入操作效率高,实现简单,适合增删数据操作,对内存空间的要求较低

缺点:不支持随机访问,只能从前往后逐一访问,不适合频繁地查找数据、容易产生内存碎片

六、逻辑结构与存储结构的对应关系

表:   顺序(数组) 、 链式(链表)

树:   链式(优先)  、 顺序

图:   顺序+链式

每种逻辑结构采用哪种存储结构没有明确规定,通常根据实现的难度、空间的要求、时间的要求综合选择最合适的存储结构

七、数据结构的运算

1、建立数据结构     create\creat

2、销毁数据结构     destroy

3、清空数据结构     clear

4、插入元素         insert\add

5、删除元素         delete

6、修改元素         modify

7、访问元素         access

8、查询元素         query

9、遍历数据结构     show\list\ergodic

10、排序数据结构    sort

标签:存储,什么,元素,数据结构,数据,节点,结构
From: https://www.cnblogs.com/wangqiuji/p/17640704.html

相关文章

  • 什么情况下数据库表索引会失效?
    什么情况下数据库表索引会失效?1.单独引用复合索引里非第⼀位置的索引列假如有INDEX(a,b,c),当条件为a或a,b或a,b,c时都可以使用索引,但是当条件为b,c时将不会使用索引。复合索引遵守“最左前缀”原则,即在查询条件中使用了复合索引的第⼀个字段,索引才会被使用。因此,在复合索引中索......
  • 深度云化时代,什么样的云网络才是企业的“心头好”?
    科技云报道原创。近年来企业上云的快速推进,对云网络提出了更多需求。最初,云网络只是满足互联网业务公网接入。随着移动互联网的发展,企业对云上网络安全隔离能力和互访能力、企业数据中心与云上网络互联、构建混合云的能力,以及在云上多地域部署业务后的多地域网络互联能力等,都推动着......
  • 为什么要敏捷开发,敏捷开发有什么好处?
        软件开发方法一直处在不断发展过程中。在诸多方法中,敏捷开发以其能持续满足不断变化的用户需求正在受到越来越多人的重视,从中小项目开始进入大型开发项目,近几年来上升势头明显。那么,敏捷开发有什么好处呢?    在软件工业界,敏捷开发已成为众多高效开发团队的制胜之......
  • 离谱,居然还有网络工程师不懂什么是Overlay网络?
    下午好,我是老杨。伴随着网络技术的发展,数据中心的二层组网结构早已出现了阶段性的架构变化。数据中心网络分为了Underlay和Overlay两个部分,网络进入了Overlay虚拟化阶段。很多小友希望能多输出一些新技术,这不,今天就给你展开说说。Overlay网络是怎么形成的?与Underlay的区别又在哪?试......
  • DevOps是什么
    导读:DevOps中的Dev指的是Development(开发),Ops指的是Operations(运维),用一句话来说,DevOps就是打通开发运维的壁垒,实现开发运维一体化。一、DevOps是什么?从哪里来?DevOps的概念DevOps一词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流......
  • docker-compose是什么怎么使用
    docker-compose是一个用于定义和运行多个Docker容器的工具,它允许你使用一个单独的配置文件来定义多个容器、网络设置、卷挂载等,并可以一次性地启动、停止、重建整个应用程序。以下是使用docker-compose的基本步骤:创建docker-compose.yml文件:在你的项目目录下创建一个......
  • CDN是什么?
    1.CDN是什么?CDN是**内容分发网络(ContentDeliveryNetwork)**的缩写。它是一个分布式的服务器系统,设计用来有效地为终端用户提供内容,例如网页、视频、图像、脚本等。CDN的主要目的是减少用户请求的响应时间、提高网站的加载速度并为内容的全球传递提供可靠性和稳定性。2.CDN如何工......
  • C++里std::enable_shared_from_this是干什么用的?
    std::enable_shared_from_this使用场景在很多场合,经常会遇到一种情况,如何安全的获取对象的this指针,一般来说我们不建议直接返回this指针,可以想象下有这么一种情况,返回的this指针保存在外部一个局部/全局变量,当对象已经被析构了,但是外部变量并不知道指针指向的对象已经被析构了,如......
  • Linux系统中samba服务是什么意思?
    了解“Linux”系统的小伙伴们,一定都听说过samba。那么Linux系统中samba服务是什么意思?samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,可以用于Linux与windows系统直接的文件共享和打印共享,接下来是详细的介绍。什么是Samba?SAMBA是在Linux和UNIX系统上实现......
  • 私有云和公有云有什么区别?
    前言私有云和公有云是云计算领域中的两种不同类型的云服务,今天就来给大家讲讲私有云和公有云是什么?它们有什么区别?一、私有云和公有云是什么?1、私有云是什么?私有云是指企业可以完全控制的云计算方式,是为一个客户单独使用而构建的,因而提供对数据、安全性和服务质量的最有效控制......