数据结构

简介: 什么是数据结构1、数据数据是描述客观世界的数字、字符以及一切能够输入到计算机中,并且能够被计算机程序处理的符号集合。简言之,数据就是计算机加工处理的原料,是信息的载体。2、数据元素数据元素是能够独立、完整地描述问题世界中的实体的最小单位,它是数据这个集合中的一个一个的元素,数据元素也成为数据结点,或者简称结点3、数据对象一个数据对象被定义为具有相同性质的数据元素的集合。

什么是数据结构
1、数据
数据是描述客观世界的数字、字符以及一切能够输入到计算机中,并且能够被计算机程序处理的符号集合。简言之,数据就是计算机加工处理的原料,是信息的载体。
2、数据元素
数据元素是能够独立、完整地描述问题世界中的实体的最小单位,它是数据这个集合中的一个一个的元素,数据元素也成为数据结点,或者简称结点
3、数据对象
一个数据对象被定义为具有相同性质的数据元素的集合。
4、结构
数据元素之间必然存在着某种联系,这种联系称为结构。人们不仅要考虑到数据的这种结构,而且还要考虑到将要施加于数据上的各种操作及其种类。从这个意义上来说,数据元素是具有结构的数据元素的集合。
这里也可以给数据结构一个形式化的描述。数据结构是一个二元组Data-Structure=(D,R),其中,D是数据元素的有限集合,R是D上关系的集合。
上述定义中的"关系"通常是指数据元素之间的逻辑关系,也称为数据的逻辑结构。通常把数据结构在计算机中的表示称为数据的物理结构。物理结构又称存储结构,包括数据元素的表示以及关系的表示两个方面。数据的逻辑结构与存储结构是密不可分的两个方面,一个算法的设计取决于选定的逻辑结构,而算法的实现则依赖于采用的存储结构。
数据结构是相互之间存在一种或者多种特定关系的数据元素的集合。数据结构包括三方面的内容:逻辑结构,存储结构和数据的运算。数据的逻辑结构和存储结构是密不可分的两个方面,一个算法的设计取决于所选定的逻辑结构,而算法的实现取决于所选定的存储结构。
数据的存储结构主要有:顺序存储结构、链式存储结构、索引存储结构和散列存储结构。
1、顺序存储结构:顺序存储结构的优点是简单,易理解,并且实际占用最少的存储空间;缺点是需要占用一片地址连续的整块空间,并且存储分配要实现进行;另外,对于一些操作的时间效率较低也是这种存储结构的主要缺陷之一。
2、链式存储结构:链式存储结构是指在计算机存储器中用一片地址任意的(连续的或者不连续的)存放数据元素的信息,一般称每个数据元素占用的若干存储单元的组合作为一个链结点。每个链结点中不仅要存放一个数据元素的元素信息,还要存放一个指出这个元素在逻辑关系中的直接后继元素所在链结点的地址,该地址被称为指针。这就是说,数据元素之间的逻辑关系通过指针间接地反映。由于不要求存储空间地址连续,因此,逻辑上相邻的数据元素在物理上不一定相邻。这种存储结构的优点是存储空间不必事先分配,在需要存储空间时可以临时申请,不会造成存储空间的浪费。像插入和删除这样操作的时间效率采用链式存储结构远比采用顺序存储结构要高。但是在这种情况中,不仅数据元素本身的数据信息需要占用存储空间,而且指针也有存储空间的开销,因此,从这一点来说,链式存储结构要比顺序存储结构的空间开销大。
3、索引结构是利用数据元素的索引关系来确定数据元素的存放位置的一种存储结构,它是由数据元素本身的数据信息以及索引表两个部分组成的。
4、散列结构是由事先构造的散列函数关系及处理冲突的方法来确定数据元素在散列表中的位置。
1、数据的逻辑结构:逻辑结构是指数据元素之间的逻辑关系,即在逻辑上描述数据,它与数据的存储无关,是独立于计算机的,数据的逻辑结构分为线性结构和非线性结构,线性表是典型的线性结构;集合,树,图是典型的非线性结构。
2、数据的存储结构:存储结构是指数据结构在计算机中的表示(又称物理结构)。它包括数据元素的表示和关系的表示。数据的存储结构是逻辑结构用计算机语言的实现。数据的存储结构是逻辑结构用计算机语言的实现,它依赖于计算机语言。数据的存储结构主要有顺序存储结构、链式存储结构、索引存储结构和散列存储结构。
3、数据的运算:施加在数据上的运算包括数据的定义和实现。
因此,数据结构课程所要研究的主要内容可以简要地归纳为以下3个方面:
1、研究数据元素之间固有的客观联系(逻辑结构)
2、研究数据在计算机内部的存储方法(存储结构)
3、研究数据在数据的各种结构(逻辑的和物理的)的基础上如何对数据实施有效的操作或处理(算法)
为此,应该说数据结构是一门抽象的,研究数据之间结构关系的学科。

目录
相关文章
|
9月前
|
存储 缓存 安全
阿里云8核云服务器价格解析:详解8核16G、8核32G、8核64G收费标准与活动价格参考
阿里云8核CPU的云服务器多少钱?我们常用的云服务器一般是2核、4核、8核这几个类型,部分企业用户可能会选择16核32核等更高的配置。本文为大家解析阿里云8核云服务器的价格体系,涵盖8核16G、8核32G、8核64G三种主流配置的收费标准与当前活动价格,以供参考和选择。
1786 3
阿里云8核云服务器价格解析:详解8核16G、8核32G、8核64G收费标准与活动价格参考
|
机器学习/深度学习 人工智能 算法
智创 AI 新视界 -- 提升 AI 推理速度的高级方法(16 - 2)
本文深度聚焦提升 AI 推理速度,全面阐述模型压缩(低秩分解、参数量化)、硬件加速(GPU、TPU)及推理算法优化(剪枝感知推理、动态批处理)。结合图像识别等多领域案例与丰富代码示例,以生动形象且专业严谨的方式,为 AI 从业者提供极具价值的技术指南,助力突破 AI 推理速度瓶颈,实现系统性能跃升。
|
安全 数据库连接 测试技术
Wire,一个神奇的Go依赖注入神器!
本文介绍了控制反转(IoC)与依赖注入(DI)的核心概念及其在Go语言中的应用,重点讲解了Google的Wire工具。通过定义提供者(provider)与注入器(injector),Wire在编译时自动生成依赖注入代码,提升程序性能与可维护性,适用于大型项目与高可测试性需求场景。
546 0
|
11月前
|
人工智能
决赛入围通知丨挑战杯“揭榜挂帅”擂台赛阿里云专项赛决赛入围公告
决赛入围通知丨挑战杯“揭榜挂帅”擂台赛阿里云专项赛决赛入围公告
|
编解码 数据安全/隐私保护 Python
抖音批量发布作品视频工具, 自媒体批量发布工具,抖音自动上传发布视频软件
这个抖音批量上传工具包含以下功能模块:配置文件(config.py):集中管理账号、视频和上传配置视频处理模块(video_processor.py)
|
安全 程序员 编译器
【实战经验】17个C++编程常见错误及其解决方案
想必不少程序员都有类似的经历:辛苦敲完项目代码,内心满是对作品品质的自信,然而当静态扫描工具登场时,却揭示出诸多隐藏的警告问题。为了让自己的编程之路更加顺畅,也为了持续精进技艺,我想借此机会汇总分享那些常被我们无意间忽视却又导致警告的编程小细节,以此作为对未来的自我警示和提升。
1816 124
|
消息中间件 Java 开发工具
【实践】快速学会使用云消息队列RabbitMQ版
本次分享的主题是快速学会使用云消息队列RabbitMQ版的实践。内容包括:如何创建和配置RabbitMQ实例,如Vhost、Exchange、Queue等;如何通过阿里云控制台管理静态用户名密码和AccessKey;以及如何使用RabbitMQ开源客户端进行消息生产和消费测试。最后介绍了实验资源的回收步骤,确保资源合理利用。通过详细的操作指南,帮助用户快速上手并掌握RabbitMQ的使用方法。
1337 10
|
缓存 监控 Java
|
机器学习/深度学习 算法 搜索推荐
【机器学习】机器学习的基本概念、算法的工作原理、实际应用案例
机器学习是人工智能的一个分支,它使计算机能够在没有明确编程的情况下从数据中学习并改进其性能。机器学习的目标是让计算机自动学习模式和规律,从而能够对未知数据做出预测或决策。
1850 2
|
小程序 安全 搜索推荐
【微信小程序开发实战项目】——个人中心页面的制作
本文介绍了如何设计和实现一个网上花店的微信小程序,包括个人中心、我的订单和我的地址等功能模块。个人中心让用户能够查看订单历史、管理地址和与客服互动。代码示例展示了`own.wxml`、`own.wxss`和`own.js`文件,用于构建个人中心界面,包括用户信息、订单链接、收藏、地址、客服和版本信息。我的订单部分展示了订单详情,包括商品图片、名称、销量、价格和订单状态,用户可以查看和管理订单。我的地址功能允许用户输入和编辑收货信息,包括联系人、性别、电话、城市和详细地址。每个功能模块都附有相应的WXML和WXSS代码,以及简洁的样式设计。
1458 0
【微信小程序开发实战项目】——个人中心页面的制作