C语言抽象数据类型ADT

根据编程的问题匹配合适的数据类型。数据项连接构成了链表,定义了一个结构代表单独的项。设计了一些方法把一系列结构构成一个链表。本质上,我们使用C语言的功能设计了一种符合程序要求的新的数据类型。但是上述的做法不系统。我们要使用更系统的方法定义数据类型

 

类型指两种信息:属性操作

定义一个新的数据类型,首先必须提供储存数据的方法。其次必须提供操控数据的方法

计算机科学领域已开发了一种定义新类型的好方法,用3步完成从抽象到具体的过程。

1、 提供类型属性和相关操作的抽象描述。这些描述既不能依赖特定的实现,也不能依赖特定的编程语言。这种正式的抽象描述被称为抽象数据类型(ADT)

2、开发一个实现ADT的编程接口。要指明如何储存数据和执行所需操作的函数。例如在C中提供结构的定义,操控该结构的函数原型。需要使用该新类型的程序员可以使用该接口进行编程。

3、编写代码实现接口,这一步至关重要,但是使用该类型的程序员不用关心实现细节。

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

C语言中使用抽象数据类型方法进行编程包含3个步骤:

1、以抽象、通用的方式描述一个类型,包括该类型的操作;

2、设计一个函数接口表示这个新类型;

3、编写具体代码实现这个接口;

转载于:https://www.cnblogs.com/grooovvve/p/9975607.html

1. 本演示程序中,集合元素限定为数字,大小由用户输入。集合中数字顺序不限,且一旦出现重复字符或非法字符,程序能自动滤去。输出的运算结果中将不含重复数字或非法字符,且按照从小到大的顺序输出。<br>2. 演示程序以用户和计算机的对话方式执行,即在计算机上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令;相应的数据输入和运算结果显示在其后。<br>3. 程序执行的命令包括:<br>(1)构造集合1;(2)构造集合2;(3)判断某数是否为集合元素;(4)添加元素;(5)删除元素;(6)求并集(存入集合1中);(7)求交集(存入集合3中);(8)输出集合1;(9)输出集合2;(0)退出。<br>“构造集合1”和“构造集合2”时,需以整型数字形式键入集合元素。<br><br>为实现上述程序功能,以线性链表表示集合。为此,需要两个抽象数据类型:线性表和集合。<br>1. 线性表的抽象数据类型定义为:<br> ADT LinkList{<br> 数据对象:D={ | IntSet,i=1,2,…,n,n 0}<br> 数据关系:R1={< , >| , D, < ,i=2,…,n}<br> 基本操作:<br> InitList(*L)<br> 操作结果:构造一个空的线性链表L。<br> IsElement(*L,e)<br> 初始条件:线性表L已存在。<br> 操作结果:若e是L的数据元素,返回1,否则返回0。<br> Append(*L,e)<br> 初始条件:线性表已存在。<br> 操作结果:按照由大到小的顺序往线性表里插入元素e,不允许重复元素。<br> Delete(*L,e)<br> 初始条件:线性表已存在。<br> 操作结果:在L中删除元素e。<br> }ADT LinkList<br>2. 集合的抽象数据类型定义为:<br> ADT LinkSet {<br> 数据对象:D={ | IntSet,i=1,2,…,n,n 0}<br> 数据关系:R1={}<br> 基本操作:<br> CreatSet(*L)<br> 初始条件:s为整型数组。<br> 操作结果:生成一个由s中数字构成的集合。<br> Union(*S1,*S2)<br> 初始条件:集合S1和S2存在。<br> 操作结果:生成一个由S1和S2的并集构成的集合,返回到S1。<br> Intersection (*S1,*S2)<br> 初始条件:集合S1和S2存在。<br> 操作结果:生成一个由S1和S2的交集构成的集合,返回到S1。<br> PrintSet (*S)<br> 初始条件:集合S已存在。<br> 操作结果:依次显示集合S中的全部元素。<br> }ADT LinkSet<br><br><br>带菜单<br>Turbo c 3.0编写
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值