数据结构(DS)学习笔记(二):数据类型与抽象数据类型

参考教材:数据结构C语言版(严蔚敏,杨伟民编著)

工具:XMind、幕布、公式编译器         

正在备考,结合自身空闲时间,不定时更新,会在里面加入一些真题帮助理解数据结构

目录

1.1数据类型

1.2抽象数据类型(ADT)

1.3多形数据类型

1.4抽象数据类型的表示与实现


1.1数据类型

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

数据类型=值的集合+值集合上的一组操作

C语言中基本数据类型:

整型:int    长整型:long int        短整型:short int      

浮点型(单精度):float   浮点型(双精度):double   字符型:char  布尔型:bool

不同类型的变量,其所能取的值的范围不同,所能进行的操作不同。

例如:bool类型的值为:true、false。可进行的操作:与、或、非...

作用:

约束变量或常量的取值范围;约束变量或常量的操作

1.2抽象数据类型(ADT)

抽象数据类型是指一个数学模型以及定义在此数学模型上的一组操作。与其在计算机内部如何表示无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部的使用。

抽象数据类型的形式定义

用三元组表示(D,S,P):D是数据对象S是D上的关系集P是对D的基本操作集

定义抽象数据类型:

ADT抽象数据类型名{
        数据对象:<数据对象的定义>
        数据关系:<数据关系的定义>
        基本操作:<基本操作的定义>
}ADT抽象数据类型

数据对象和数据关系的定义用伪码(伪代码)描述。

基本操作的定义格式为:

基本操作名(参数表)
    初始条件:<初始条件描述>
    操作结果:<操作结果描述>

赋值参数只为操作提供输入值

引用参数&打头,除了可以提供输入值,还将返回操作结果。

三种抽象数据类型

(一)原子类型:属于原子类型的变量的值是不可以分解的

(二)固定聚合类型:属于固定聚合类型的变量,其值由确定数目的成分按某种结构组成

(三)可变聚合类型:构成可变聚合类型“值”的成分的数目不确定。比如定义一个“有序整数序列”的抽象数据类型,其中序列的长度是可变的。

1.3多形数据类型

多形数据类型是指其值的成分不确定的数据类型。一个抽象数据类型里面的元素可以是整数或字符或字符串,甚至更复杂地由多种成分构成(只要能进行关系运算即可)

1.4抽象数据类型的表示与实现

(一)预定义常量和类型

//函数结果状态代码
#define    TURE           1
#define    FALSE          0
#define    OK             1
#define    ERROR          0
#define    INFEASIBLE     -1
#define    OVERFLOW       -2
//Status是函数的类型,其值是函数结果状态的代码
typedef  int  Status;

(二)数据结构的表示(存储结构)用类型定义(typedef)描述。数据元素类型约定为ElemType,有用户在使用该数据类型时自行定义

(三)赋值语句

简单赋值        变量名 = 表达式

串联赋值        变量名1 = 变量名2 = ... = 变量名k = 表达式

成组赋值        (变量名1,...,变量名k) = (表达式1,...,表达式k);

                        结构名 = 结构名;

                        结构名 = (值1,...,值k);

                        变量名[ ] = 表达式;

                        变量名[起始下标..终止下标] = 变量名[ 起始下标..终止下标];

交换赋值        变量名\leftarrow \rightarrow变量名;

条件赋值        变量名 = 条件表达式 ? 表达式 T :表达式F;

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 07:44:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 07:44:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 07:44:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 07:44:05       20 阅读

热门阅读

  1. 嵌入式Linux中OpenSSH移植到ARM开发板

    2024-06-12 07:44:05       8 阅读
  2. Redis的数据淘汰策略和集群部署

    2024-06-12 07:44:05       7 阅读
  3. 基于python的PDF文件解析器汇总

    2024-06-12 07:44:05       9 阅读
  4. Web前端开发PDF:技术与挑战的深度剖析

    2024-06-12 07:44:05       10 阅读
  5. 深度学习-使用 Bash 脚本

    2024-06-12 07:44:05       7 阅读
  6. C++中的抽象工厂模式

    2024-06-12 07:44:05       7 阅读
  7. 关于Flutter doctor里两个警告的消除

    2024-06-12 07:44:05       9 阅读
  8. 深度探索Copilot插件

    2024-06-12 07:44:05       6 阅读
  9. elasticsearch快照生成与恢复

    2024-06-12 07:44:05       8 阅读
  10. 2024备忘知识点

    2024-06-12 07:44:05       5 阅读
  11. Python的pytest框架(6)--测试钩子 (hooks)

    2024-06-12 07:44:05       8 阅读
  12. ACM算法学习路线、清单

    2024-06-12 07:44:05       7 阅读
  13. 【Qt】Qt中QJsonArray类

    2024-06-12 07:44:05       5 阅读