当前位置: 首页 > article >正文

2. 数据结构基本概念 (2)

本文部分ppt、视频截图来自:[青岛大学-王卓老师的个人空间-王卓老师个人主页-哔哩哔哩视频]

1. 数据结构基本概念

1.1 数据类型和抽象数据类型

(1) 数据类型(Data Type)

  • 概念

数据类型是一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称。

在这里插入图片描述

在使用高级程序设计语言编写程序时,必须明确说明程序中出现的每个变量、常量或表达式所属的数据类型

如,C语言中:

  • 提供int,char, float, double等基本数据类型
  • 数组、结构、共用体、枚举等构造数据类型
  • 还有指针、空(void)类型
  • 用户也可用typedef 自己定义数据类型

一些最基本的数据结构可以用数据类型来实现,如数组、字符串等。但另一些常用的数据结构,如栈、队列、树、图等,不能直接用数据类型来表示

  • 作用
    高级语言中的数据类型明显地或隐含地规定了在程序执行期间变量和表达的所有可能的取值范围,以及在这些数值范围上所允许进行的操作

在这里插入图片描述

在这里插入图片描述
(2) 抽象数据类型(Abstract Data Type, ADT)

  • 概念
    指一个数学模型以及定义在此数学模型上的一组操作
  • 由用户定义,从问题抽象出数据模型(逻辑结构)。
  • 还包括定义在数据模型上的一组抽象运算(相关操作)。
  • 不考虑计算机内具体存储结构与运算的具体实现算法 。
  • 例如,一个圆形○可以抽象为:
    圆:到某个点的距离相等的点的集合
    运算:构造圆、求面积、求周长等
  • 抽象类型的形式定义
    在这里插入图片描述
    在这里插入图片描述
    基本操作定义格式说明:
  • 参数表:赋值参数 只为操作提供输入值。 如求圆面积:area( r ),求乘方power( x , y ) 。

  • 引用参数:以&打头,除可提供输入值外,还将返回操作结果。
    如:求图形G的缩放的返回值 G’ = scale( G, n ),其中G是输入图形,n是缩放倍数,G’是缩放后结果。如果用上引用参数,则可不用另外定义G’,用G自身返回,则用scale( &G, n) 即可。这里的&G就是引用参数。

  • 初始条件:描述操作执行之前数据结构和参数应满足的条件,若不满足则操作失败,并返回相应出错信息。若初始条件为空,则省略之。

  • 操作结果:说明操作正常完成之后,数据结构的变化状况和应返回的结果。

  • 抽象数据类型(ADT)定义举例:

(1)Circle定义

在这里插入图片描述

(2)复数定义

在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/2396099.html

相关文章:

  • 鸿蒙5.0+ 多协议设备发现与分布式软总线技术实践
  • STM32F407寄存器操作(多通道单ADC+DMA)
  • 基于React和TypeScript的金融市场模拟器开发与模式分析
  • 剑指offer13_剪绳子
  • reverse_ssh 建立反向 SSH 连接指南 混淆AV [好东西哟]
  • vue+elementUi+axios实现分页(MyBatis、Servlet)
  • WebBuilder数据库:企业数据管理的能力引擎
  • QtWidgets,QtCore,QtGui
  • lvs-keepalived高可用群集
  • 【Elasticsearch】suggest
  • 高速收发器
  • webpack的安装及其后序部分
  • 如何利用自动生成文档工具打造出色的技术文档
  • 读《Go语言圣经记录》(二):深入理解Go语言的程序结构
  • 实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.7 R语言解题
  • nacos Sentinel zipkin docker运行
  • OpenCv高阶(二十)——dlib脸部轮廓绘制
  • pikachu靶场通关笔记08 XSS关卡04-DOM型XSS
  • python集成inotify-rsync实现跨服务器文件同步
  • 005 ElasticSearch 许可证过期问题
  • Spring AI 系列之使用 Spring AI 开发模型上下文协议(MCP)
  • [Python] Python运维:系统性能信息模块psutil和系统批量运维管理器paramiko
  • Linux 简单模拟实现C语言文件流
  • ArcPy错误处理与调试技巧(3)
  • 小程序使用npm包的方法
  • Asp.Net Core SignalR的协议协商问题
  • Rust 学习笔记:发布一个 crate 到 crates.io
  • 剪枝中的 `break` 与 `return` 区别详解
  • Spring Boot 4.0实战:构建高并发电商系统
  • Vert.x学习笔记-EventLoop与Context的关系