抽象数据类型的表示与实现
来源:互联网 发布:如何申请网站域名 编辑:程序博客网 时间:2024/04/29 04:53
typedef ElemType * Triplet;//由InitTriplet分配3个元素存储空间//Triplet类型是ElemType类型的指针,存放ElemType类型的地址Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3){ //操作结果:构造三元组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;}Status DestroyTriplet(Triplet &T){ //操作结果:三元组T被销毁。 free(T);//释放T所指的三元组存储空间 T = NULL;//T不再指向任何存储单元 return OK;}Status Get(Triplet T, int i, ElemType &e){ //初始条件:三元组T已存在,1 <= i <= 3。操作结果:用e返回T的第i元的值。 if (i<1 || i>3) return ERROR;//i不在三元组范围内 e = T[i - 1];//将三元组T的第i个元素赋给e return OK;}Status Put(Triplet T, int i, ElemType e){ //初始条件:三元组T已存在,1 <= i <= 3。操作结果:改变T的第i元的值为e。 if (i<1 || i>3) return ERROR;//i不在三元组范围内 T[i - 1] = e;//将e的值赋给三元组T的第i个元素 return OK;}Status IsAscending(Triplet T){ //初始条件:三元组T已存在。操作结果:如果三元组T的3个元素按升序排列,则返回1,否则返回0。 return (T[0] <= T[1] && T[1] <= T[2]); //只在T[0]不大于T[1]且不大于T[2]时返回真}Status IsDescending(Triplet T){ //初始条件:三元组T已存在。操作结果:如果三元组T的3个元素按降序排列,则返回1,否则返回0。 return (T[0] >= T[1] && T[1] >= T[2]);//只在T[0]不小于T[1]且不小于T[2]时返回真}Status Max(Triplet T, ElemType &e){ //初始条件:三元组T已存在。操作结果:用e返回指向T的最大元素的值。 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, ElemType &e){ //初始条件:三元组T已存在。操作结果:用e返回指向T的最小元素的值。 e = (T[0] <= T[1]) ? (T[0] <= T[2] ? T[0] : T[2]) : (T[1] <= T[2] ? T[1] : T[2]);//嵌套的条件运算符 return OK;}void PrintE(ElemType e){//输出元素的值 printf("%d\n", e);}void PrintT(Triplet T){//依次输出三元组的值 printf("%d, %d, %d\n", T[0], T[1], T[2]);}void main(){ Triplet T; ElemType m; Status i; i = InitTriplet(T, 5, 7, 9);//初始化三元组T,其3个元素依次为5,7,9。 printf("调用初始化函数后,i = %d(1:成功)。 T的三个值为", i); PrintT(T);//输出T的3个值 i = Get(T, 2, m);//将三元组T的第2个值赋给m if (i == OK){//调用Get()成功 printf("T的第2个值为:"); PrintE(m); //输出m (= T[1]) } i = Put(T, 2, 6);//将三元组T的第2个值改为6 if (i == OK){//调用Put()成功 printf("将T的第2个值改为6后,T的三个值为:"); PrintT(T);//依次输出三元组T的3个值 } i = IsAscending(T);//测试升序的函数 printf("调用测试升序的函数后,i = %d(0:否 1:是)\n", i); i = IsDescending(T);//测试降序的函数 printf("调用测试降序的函数后,i = %d(0:否 1:是)\n", i); if (i = Max(T, m) == OK){//先赋值再比较 printf("T中的最大值为"); PrintE(m); //输出最大值m } if (i = Min(T, m) == OK){ printf("T中的最小值为"); PrintE(m);//输出最小值m } DestroyTriplet(T);//函数也可以不带返回值 printf("销毁T后,T = %u\n", T); getchar();}
0 0
- 抽象数据类型的表示与实现
- 抽象数据类型的表示与实现
- 抽象数据类型的表示与实现
- 抽象数据类型的表示与实现
- 抽象数据类型的表示与实现
- 抽象数据类型Triplet的表示与实现
- 1.3抽象数据类型的表示与实现
- 抽象数据类型的表示与实现
- 数据结构教程 第二课 抽象数据类型的表示与实现
- 数据结构--抽象数据类型(ADT)的表示与实现
- 数据结构(一) 抽象数据类型的表示与实现
- 抽象数据类型的表示和实现方法
- 抽象数据类型Triplet的表示和实现
- 抽象数据类型Triplet的表示和实现
- 抽象数据类型Triplet的表示和实现
- 抽象数据类型Triplet的表示和实现
- 抽象数据类型的表示和实现
- 抽象数据类型 Triplet 的表示和实现
- 信息系统需求及网上找的源代码一份
- C++排序方法汇总
- boost库解析json例子(二)
- 无需翻墙, Android官方开发相关下载资源一揽子大汇总
- Linux rpm 命令参数使用详解[介绍和应用]
- 抽象数据类型的表示与实现
- Android Shape 形状
- 0x3f3f3f3f...编程中无穷大常量的设置技巧
- 收藏网站11
- Java基础--对象内存管理
- 浅谈一下关于android碎片化的问题
- 2012年5月SAT香港真题解析
- 线程池例子
- Sublime Text 全程指引