-
2021-05-24 04:46:29
抽象数据类型三元组的定义
ADT Triplet{
数据对象:D= {e1,e2,e3 | e1,e2,e3属于Elemset(定义了关系的某个集合)}
数据关系:R1={|}
基本操作:
—InitTriplet(&T,v1,v2,v3)
— 初始条件:
— 操作结果:用e值取代三元组T的第i个元素
— DestroyTriplet(&T)
— 初始条件:三元组T已经存在。
— 操作结果:销毁三元组T。
—Get(T,i,&e)
— 初始条件:三元组T已经存在,1<=i<=3,
— 操作结果:用e返回三元组T的第i个元素。
— Put(&T,i,e)
— 初始条件:三元组T已经存在,1<=i<=3,
— 操作结果:用e值取代三元组T的第i个元素。
— IsAscending(T)
— 初始条件:三元组T已经存在。
— 操作结果:如果三元组T的三个元素按升序排列,则返回TRUE;否则返回FALSE
—IsDescending(T)
— 初始条件:三元组T已经存在。
— 操作结果:如果三元组T的三个元素按降序排列,则返回TRUE;否则返回FALSE
— Max(T,&e)
— 初始条件:三元组T已经存在。
— 操作结果:用e返回三元组T的最大值。
—Min(T,&e)
— 初始条件:三元组T已经存在。
— 操作结果:用e返回三元组T的最小值。
}ADT Triplet
抽象数据类型的表示与实现
类C语言(做了扩充和修改)的表示
如:预定义常量和类型
#define TRUE 1
#define FALSE 0
更多相关内容 -
C语言-抽象数据类型三元组定义
2020-11-05 08:45:00//三元组 感觉要改变结构里的值时用&t,不改变用t status init_triplet(triplet &t,element_type v1,element_type v2,element_type v3);//创建三元组 status destory_triplet(triplet &t); //销毁三元组 status get...#include<stdio.h> #include<stdlib.h> #define true 1 #define false 0 #define ok 1 #define error 0 #define infeasible -1 //不可行的 #define overflow -2 //溢出,一般用于exit(overflow),程序退出,无论哪里调用exit //程序都会推出,而return是退回到上一级。 typedef int status; //函数类型 typedef int element_type;//元素类型 typedef element_type* triplet;//三元组 感觉要改变结构里的值时用&t,不改变用t status init_triplet(triplet &t,element_type v1,element_type v2,element_type v3);//创建三元组 status destory_triplet(triplet &t); //销毁三元组 status get(triplet t,int i,element_type &e);//取值 status put(triplet &t,int i,element_type e);//放值 status is_ascendint(triplet t); //是否升序 status is_descending(triplet t); //是否降序 status max(triplet t,element_type &e); status min(triplet t,element_type &e); status init_triplet(triplet &t,element_type v1,element_type v2,element_type v3) { t=(element_type*)malloc(3*sizeof(element_type));//t存的申请空间的地址,不为0 if(!t)// !t为0,if不成立,不运行退出 exit(overflow); t[0]=v1; t[1]=v2; t[2]=v3; } status destory_triplet(triplet &t) { free(t);//释放t申请的一段空间,但t指针还在,指向未知地址 t=NULL; //t指向null,这样的t是不允许使用的,使用需重新赋值, //NULL可读地址,不可读数值,这样防止了误操作 return ok; } status get(triplet t,int i,element_type &e) { if(i<1 || i>3) return error; e=t[i-1]; return ok; } status put(triplet &t,int i,element_type e) { if(i<1 || i>3) return error; t[i-1]=e; } status is_ascendint(triplet t) { /* if(t[0]<t[1]) { if(t[1]<t[2]) return ok; } return error;*/ return t[0]<t[1] && t[1]<t[2]; } status is_descending(triplet t) { return t[0]>=t[1] && t[1]>=t[2]; } status max(triplet t,element_type &e) { e=t[0]>=t[1]?(t[0]>=t[2]?t[0]:t[2]):(t[1]>=t[2]?t[1]:t[2]); return ok; } status min(triplet t,element_type &e) { e=t[0]<=t[1]?(t[0]<=t[2]?t[0]:t[2]):(t[1]<=t[2]?t[1]:t[2]); return ok; } status main() { //int* p=NULL; //printf("%#x",p);//%#x十六进制输出 }
-
[抽象数据类型三元组的定义.doc
2021-05-24 04:46:28[抽象数据类型三元组的定义抽象数据类型三元组的定义ADT Triplet{数据对象:D= {e1,e2,e3 | e1,e2,e3属于Elemset(定义了关系的某个集合)}数据关系:R1={|}基本操作:—InitTriplet(&T,v1,v2,v3)— 初始条件:— ...[抽象数据类型三元组的定义
抽象数据类型三元组的定义
ADT Triplet{
数据对象:D= {e1,e2,e3 | e1,e2,e3属于Elemset(定义了关系的某个集合)}
数据关系:R1={|}
基本操作:
—InitTriplet(&T,v1,v2,v3)
— 初始条件:
— 操作结果:用e值取代三元组T的第i个元素
— DestroyTriplet(&T)
— 初始条件:三元组T已经存在。
— 操作结果:销毁三元组T。
—Get(T,i,&e)
— 初始条件:三元组T已经存在,1<=i<=3,
— 操作结果:用e返回三元组T的第i个元素。
— Put(&T,i,e)
— 初始条件:三元组T已经存在,1<=i<=3,
— 操作结果:用e值取代三元组T的第i个元素。
— IsAscending(T)
— 初始条件:三元组T已经存在。
— 操作结果:如果三元组T的三个元素按升序排列,则返回TRUE;否则返回FALSE
—IsDescending(T)
— 初始条件:三元组T已经存在。
— 操作结果:如果三元组T的三个元素按降序排列,则返回TRUE;否则返回FALSE
— Max(T,&e)
— 初始条件:三元组T已经存在。
— 操作结果:用e返回三元组T的最大值。
—Min(T,&e)
— 初始条件:三元组T已经存在。
— 操作结果:用e返回三元组T的最小值。
}ADT Triplet
抽象数据类型的表示与实现
类C语言(做了扩充和修改)的表示
如:预定义常量和类型
#define TRUE 1
#define FALSE0
#define OK1
#define ERROR0
#define INFEASIVLE-1
#define OVERFLOW-2
Typedef int Status
Status Get(Triple T,int i,Elemtype *e)
// 初始条件:三元组T已经存在,1<=i<=3.
// 操作结果:用e返回三元组T的第i个元素
{
If(i<1 || i>3) return ERROR;
*e = T[i-1];
Return OK;
}
算法和算法分析
算法(Algorithm):对特定问题求解步骤的一种描述。
算法的五个重要特性:
1有穷性 2确定性 3可行性 4输入 4输出
算法举例————气泡排序算法
初始条件:N个待排序的数a[0]—a[n-1]
结果:排序后a[0]—a[n-1]从小到大排列
1 置标记change=TRUE;
2 i从n-1知道i=2做(3)-- (6)步
3 change = FALSE;
4 j从0知道j=i-1做(5)
5 若a[j]>a[j+1]则交换他们并置change = TRUE
6 若change = FALSE 则结束
7 算法结束
i从n-1知道i=2 做 2—3 步
j从0知道j=i-1做 3
若a[j]>a[j+1]则交换他们
算法结束
Void bb_sort(int a[],int n){
for(i=n-1;i > 1; --i){
for(j=0;j
if(a[j]>a[j+1]){a[j]←→a[j+1];}
} // bb_sort
算法设计的要求
算法应达到的目标
1正确性2可读性3健壮性4效率与低存储量
算法效率的度量
1事后统计法
2事前分析估算法
]算法的 时间复杂度 ;基本操作重复执行次数。
它是问题规模n的某个函数f(n);
T(n)= O(f(n))
平均时间复杂度——时间复杂度与输入数据有关时采用平均时间复杂度或最最坏时间复杂度
// 气泡排序
时间复杂度只考虑对问题规模的增长率
在难以精确计算基本操作执行次数时,仅需要求增长率(或阶)即可。
阶:for(i=2;i<=n:++i)
For(j=2;j<=i;++j){++x;a[i,j]=x;}
++x的执行次数关于n的增长率时O(n平方)
最大的数量阶 n的n次方 n!
线性表
线性表结构的特点:
存在唯一的第一个数据元素
存在唯一的最后一个数据元素
除第一个外。每个数据元素均有且只有一个前驱元素;
除最后一个外。每个数据元素均有且只有一个后继元素。
线性表举例;
字母表 (A,B,C ,,, X Y Z)
数据序列(6.17.28.50)
N个元素的线性表
(a1.a2,a3...an)
第一个元素没有前驱 最后一个元素没有后继 第i个
-
抽象数据类型三元组的表示和实现
2012-04-20 15:33:16功能有初始化,求最大值,最小值,按升序排序、按降序排序等等 -
试仿照三元组的抽象数据类型分别写出数据类型复数和有理数的定义?
2021-05-24 04:46:56抽象数据类型复数complex:ADT complex{数据对象:D={e1,e2|e1,e2∈R}数据关系:R1={}基本操作:Initcomplex(&T,v1,v2)操作结果:构造了复数T,元素e1,e2分别被赋以参数v1,v2的值.Destroycomplex(&T)初始...满意答案
hweiwei420
2015.10.10
采纳率:50% 等级:13
已帮助:14203人
a.
抽象数据类型复数complex:
ADT complex{
数据对象:D={e1,e2|e1,e2∈R}
数据关系:R1={}
基本操作:
Initcomplex(&T,v1,v2)
操作结果:构造了复数T,元素e1,e2分别被赋以参数v1,v2的值.
Destroycomplex(&T)
初始条件:复数T已存在.
操作结果:复数T被销毁.
Get(T,i,&e)
初始条件:复数T已存在,1≤i≤2.
操作结果:用e返回T的实部或虚部的值。
Isascending(T)
初始条件:复数T已存在。
操作结果:两部分按升序排列,则返回1,否则返回0.
Isdescending(T)
初始条件:复数T已存在。
操作结果:两部分按降序排列,则返回1,否则返回0.
Put(&T,I,e)
初始条件:复数T已存在, 1≤i≤2.
操作结果:改变T实部或虚部的值为e.
Max(T,&e)
初始条件:复数T已存在。
操作结果:用e返回实部,虚部中较大的值。
Min(T,&e)
初始条件:复数T已存在
操作结果:用e返回实部,虚部中较小的值。
}ADT complex
b. 抽象数据类型有理数:
ADT rational{
数据对象:D={a,b|a,b为整数,且b不为0}
数据关系:R={}
基本操作:
Initrational(&T,v1,v2)
操作结果:构造有理数T,元素啊,a,b分别被赋以参数v1,v2的值。
Destroyrational(&T)
初始条件:有理数T已存在。
操作结果:有理数T被销毁。
Get(T,i,&e)
初始条件:有理数T已存在,1≤i≤2.
操作结果:用e返回T的分子或分母的值。
Put(&T,i,e)
初始条件:有理数T已存在,1≤i≤2.
操作结果:改变T的分子或分母的值为e.
Isascending(T)
初始条件:复数T已存在。
操作结果:两部分按升序排列,则返回1,否则返回0.
Isdescending(T)
初始条件:复数T已存在。
操作结果:两部分按降序排列,则返回1,否则返回0.
Max(T,&e)
初始条件:有理数T已存在。
操作结果:用e返回分子,母中较大一个的值。
Min(T,&e)
初始条件:有理数T已存在。
操作结果:用e返回分子,分母中较小的一个。
}ADT rational
00分享举报
-
抽象数据类型(三元组ADT、复数四则运算)
2013-05-12 22:46:53抽象数据类型(三元组ADT、复数四则运算) 数据结构 湖南大学 -
抽象数据类型三元组表示与实现
2022-03-09 18:45:412,抽象数据类型用三元组表示:ADT = (D,S,P) D: 数据对象 S:D上的关系集 P:D上的操作集 3,ADT常用定义格式: ADT抽象数据类型名{ 数据对象:<数据对象的定义> 数据关系:<... -
三元组的抽象数据类型
2021-03-13 12:14:31设计实现抽象数据类型“三元组”,要求动态分配内存。每个三元组由任意三个实数的序列构成,基本操作包括:创建一个三元组,取三元组的任意一个分量,置三元组的任意一个分量,求三元组的最大分量,求三元组的最小... -
【数据结构】三元组的实现—抽象数据类型
2020-11-08 19:02:55实验1 抽象数据类型 5142 简单三元组 要求:建立一个三元组抽象类型,根据给定的主函数实现三元组的创建,销毁,赋值,遍历,求最大值等操作。 main.cpp /******************main.cpp********************* 测试... -
仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义
2018-07-27 09:11:00数据对象:D={r,i | r,i为实数} 数据关系:S={<r,i>} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C,实部为re,虚部为im。 DestoryComplex(&C) 初始条件:复数C... -
设计实现抽象数据类型“三元组”,要求动态分配内存
2019-03-28 12:56:16基本操作包括:创建一个三元组,取三元组的任意一个分量,置三元组的任意一个分量,求三元组的最大分量,求三元组的最小分量,显示三元组,销毁三元组。 #include <stdio.h> #include <stdlib.h> #... -
实验报告 抽象数据类型的表示和实现 (三元组) 实现对三元组的基本操作 动态分配 (更新)增加菜单功能
2021-03-19 09:17:09设计实现抽象数据类型“三元组”,要求动态分配内存。每个三元组由任意三个实数的序列构成,基本操作包括:创建一个三元组,取三元组的任意一个分量,置三元组的任意一个分量,求三元组的最大分量,求三元组的最小... -
数据结构--抽象数据类型三元组Triplet的表示和实现
2019-01-03 18:36:00抽象数据类型三元组Triplet的表示和实现。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。按“值”的不同特性,高级程序语言中的数据类型可分为两类:一类是非结构的原子类型,原子类型的值是不可分解... -
抽象数据类型三元组Triplet基本操作与实现 严蔚敏版
2018-10-21 15:36:17这个博客基本操作大部分来自教材《数据结构C语言版》严蔚敏版,实现了书中的大部分功能,并且用了三个文件。 一个是主函数,一个是功能模块,一个是头文件定义,用VC6.0++完成 //头文件声明 #ifndef _FUNC_H #... -
java抽象数据类型
2021-02-12 21:50:32抽象数据类型抽象数据类型是描述数据结构的一种理论工具。在介绍抽象数据类型之前我们先介绍一下数据类型的基本概念。数据类型(data type)是一组性质相同的数据元素的集合以及加在这个集合上的一组操作。例如Java ... -
抽象数据类型ADT
2021-06-28 16:14:01抽象数据类型的定义取决于它的一组逻辑特性,而与计算机内部如何表示无关。 这个定义听起来确实很抽象 0.0 换种方法说,我们知道一些固定的数据类型比如int、float、char、double。。。。。。巴 -
设计实现抽象数据类型“复数”
2013-01-08 21:53:06设计实现抽象数据类型“复数” 实现复数的加法、减法、乘法,以及求复数的实部、虚部等基本操作。 -
C语言实现三元组抽象数据类型Triplet
2019-03-31 13:10:48//构造三元组T,依次置T的3个元素的初值为v1,v2和v3。 T=(ElemType*)malloc(3*sizeof(ElemType));//分配3个元素的存储空间 if(!T)exit(OVERFLOW); //分配存储空间失败 T[0]=v1; T[1]=v2; T[2]=v3; return OK; ... -
抽象数据类型定义(ADT)
2014-03-16 16:03:56一、抽象数据类型定义(ADT) 作用:抽象数据类型可以使我们更容易描述现实世界。例:用线性表描述学生成绩表,用树或图描述遗传关系。 定义:一个数学模型以及定义在该模型上的一组操作。 关键:使用它的人... -
数据结构、数据类型、抽象数据类型之间的区别
2019-11-03 20:15:37三者的定义(蓝字可忽略): 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合,包括逻辑结构和物理结构。(数据元素是最基本的数据单位,最基本的数据元素是一个二进制位。) 逻辑结构指反映数据... -
数据类型、抽象数据类型以及抽象数据类型的描述方法和表示方法
2020-01-11 15:14:37数据类型: 是一个值的集合和定义在此集合上一组操作的总称。 数据类型有两种:简单型和结构类型。...抽象数据类型(Abstract Datat Type, ADT): 是一个数学模型和定义在此数学模型上一组操作。 ... -
数据结构1-C语言给出一个完整的抽象数据类型复数的定义,表示,及实现
2019-04-07 21:24:30它包括逻辑结构还有存储结构,然后学习了一下数据类型的表示以及实现,虽然在C语言基础中可以常常看到结构体,但是到今天才明白什么是用户建立自己的数据类型这句话,以下就是构建复数这样一个结构体的数据类型;... -
数据结构、数据类型、抽象数据类型之间的关系
2021-10-23 18:41:393. 抽象数据类型:是指一个数学模型以及定义在该模型上的一组操作。 数据结构的形式定义为:一个二元组,Data Structure = (D, S)其中D是数据元素的有限集,S是D上关系的有限集。 抽象数据类.. -
实验02 抽象数据类型的表示与实现.doc
2021-07-27 06:01:03抽象数据类型通常采用以下格式定义:ADT抽象数据类型名{数据对象:数据关系:基本操作:}ADT抽象数据类型名(2)三元组的抽象数据类型定义及表示我们以抽象数据类型三元组为例,说明抽象数据类型是如何定义的。三元组实际上...