1 #include <stdio.h>
  2 #include <stdlib.h>
  3
  4 #define ERROR 0
  5 #define OK 1
  6
  7 typedef int Status;
  8 typedef int Elemtype;
  9 typedef Elemtype * Triplet;
 10
 11 Status InitTriplet(Triplet *t, Elemtype v0, Elemtype v1, Elemtype v2){ //三元组t的初始化
 12
 13     *t = (Elemtype *)malloc(3 * sizeof(Elemtype));
 14     if (!*t)
 15         exit(-1);
 16
 17     (*t)[0] = v0;
 18     (*t)[1] = v1;
 19     (*t)[2] = v2;
 20
 21     return OK;
 22 }
 23
 24 Status DestroyTriplet(Triplet *t){//三元组t的释放 int* t=t
 25
 26     free(*t);
 27     *t = NULL;
 28     return OK;
 29 }
 30
 31 Status Get(Triplet t, int i, Elemtype *e){//得到三元组t中的某个元素
 32     if (i<1 || i>3 || t == NULL)
 33         return ERROR;
 34     *e = t[i - 1];
 35     //printf("三元组中第%d个元素为%d\n",(i+1),t[i]);
 36     return OK;
 37 }
 38
 39 Status Put(Triplet t, int i, Elemtype e){
 40     if (t == NULL)
 41         return ERROR;
 42     if (i<1 || i>3 || t == NULL)
 43         return ERROR;
 44     t[i] = e;
 45     return OK;
 46 }
 47
 48 Status Show(Triplet t){
 49     if (t == NULL)
 50         return ERROR;
 51     for (int i = 0; i < 3; i++)
 52         printf("第%d个元素为%d\n", i + 1, t[i]);
 53     return OK;
 54 }
 55
 56 Status isAscending(Triplet t){
 57     if (t == NULL)
 58         return ERROR;
 59     return(t[0] <= t[1] && t[1] <= t[2]);
 60 }
 61
 62 Status isDescending(Triplet t){
 63     if (t == NULL)
 64         return ERROR;
 65     return(t[0] >= t[1] && t[1] >= t[2]);
 66 }
 67
 68 Status Max(Triplet t, Elemtype *e){
 69     if (t == NULL)
 70         return ERROR;
 71     *e = ((t[0] > t[1] ? t[0] : t[1])>t[2]) ? (t[0] > t[1] ? t[0] : t[1]) : t[2];
 72     return OK;
 73 }
 74
 75 Status Min(Triplet t, Elemtype *e){
 76     if (t == NULL)
 77     {
 78         printf("t为空\n");
 79         return ERROR;
 80     }
 81     *e = ((t[0] < t[1] ? t[0] : t[1])<t[2]) ? (t[0] < t[1] ? t[0] : t[1]) : t[2];
 82     return OK;
 83 }
 84
 85 void main(){
 86     Status i;//程序状态
 87     Elemtype p;//用于主函数和子函数的内存共享
 88     Elemtype max;
 89     Elemtype min;
 90     Triplet t;
 91     int di = 1;
 92     i = InitTriplet(&t, 0, 1, 2);
 93     if (i){
 94         i = Get(t, di, &p);
 95     }
 96     printf("三元组中第%d个元素为%d\n", di, p);
 97     if (i){
 98         i = Put(t, di, 5);
 99     }
100     if (i){
101         i = Show(t);
102     }
103
104     if (isAscending(t))
105         printf("三元组中的元素是按升序排列\n");
106     else
107         printf("三元组中的元素不是按升序排列\n");
108
109     if (isDescending(t))
110         printf("三元组中的元素是按降序排列\n");
111     else
112         printf("三元组中的元素不是按降序排列\n");
113
114     if (i){
115         i = Max(t, &max);
116     }
117     printf("三元组中元素最大的元素为%d\n", max);
118
119     if (i){
120         DestroyTriplet(&t);
121     }
122
123
124     if (i){
125         i = Min(t, &min);
126     }
127
128     printf("三元组中元素最小的元素为%d\n", min);//t所指向的内存空间已被释放,min中存放着未初始化的垃圾数字
129 }

转载于:https://www.cnblogs.com/gangtiexia/p/4756057.html

抽象数据类型Triplet的C语言实现相关推荐

  1. 抽象数据类型Triplet的表示与实现

    <数据结构>算法实现及解析 --配合严蔚敏.吴伟民编著的<数据结构>(C语言版) 1.抽象数据类型Triplet的表示与实现 #include "c1.h" ...

  2. 抽象数据类型Triplet的表示和实现。

    抽象数据类型Triplet的表示和实现. 建立一个项目,包含以下三个部分: (1)第一部分:Common.h #define TRUE 1 #define FALSE 0 #define OK 1 # ...

  3. 抽象数据类型的三元组C语言,试仿照三元组的抽象数据类型分别写出数据类型复数和有理数的定义?...

    满意答案 hweiwei420 2015.10.10 采纳率:50%    等级:13 已帮助:14203人 a. 抽象数据类型复数complex: ADT complex{ 数据对象:D={e1,e ...

  4. c语言写报告抽象数据类型,数据结构(C语言版)第一章 抽象数据类型的表示与实现...

    //文件名:Triplet.c //因为C语言没有引用,所以用指针代替引用 //函数的头文件 #include #include //函数结果状态码 #define TRUE 1 #define FA ...

  5. 数据结构--抽象数据类型三元组Triplet的表示和实现

    抽象数据类型三元组Triplet的表示和实现. 数据类型是一个值的集合和定义在这个值集上的一组操作的总称.按"值"的不同特性,高级程序语言中的数据类型可分为两类:一类是非结构的原子 ...

  6. 面向对象C语言编程--抽象数据类型-AbstractDataTypes

    AbstractDataTypes C语言的灵活 C语言很灵活,不但有基础数据类型,char.int.double等,还允许程序员自定义类型,如: 定义一个链表使用的数据类型,其中有Node节点和自己 ...

  7. 复数抽象数据类型C语言,采用C/C++语言如何实现复数抽象数据类型Complex

    记录一下! 采用C/C++语言如何实现复数抽象数据类型Complex #include typedef struct Complex { double e1; // 实部 double e2; // ...

  8. c语言 数据结构 list、queue、tree抽象数据类型的定义与实现 详尽代码和注释

    本文使用c语言定义并实现list.queue.tree抽象数据类型,代码有详尽注释,可以通过代码熟悉原理并运用数据结构. 0.ADT基础知识 类型包括两类信息,属性和操作.在编程时,根据编程问题匹配合 ...

  9. c语言写报告抽象数据类型,C语言抽象数据类型ADT

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

最新文章

  1. java 中断 继续_关于中断的线程如何继续。。在线等
  2. R语言ggplot2可视化自定义图例实战:添加自定义的图例、添加填充色的图例
  3. C#方法参数传递-同时使用ref和out关键字
  4. 在终端输入命令打开mac自带的python工具IDLE
  5. lidar激光雷达介绍,以及使用激光雷达数据通过深度学习做目标检测
  6. 第1次作业+105032014074
  7. 04.full_text match查询
  8. 最常见的读入数据方法集锦
  9. 让IE6、IE7、IE8支持CSS3
  10. Makefile之嵌套执行(9)
  11. java中日历类的用法_java日期类的用法
  12. JAVA网络编程-TCP客户端与服务器端连接
  13. vscode代码跳转
  14. pq 中m函数判断嵌套_PowerQuery 进阶之 M 函数学习
  15. JAVA面向对象编程---学生管理系统
  16. 通过Adobe Acrobat DC和iText.jar完成通过pdf模板生成pdf
  17. 刨根究底字符编码之三——字符编码的由来
  18. 2021年起重机械指挥考试题库及起重机械指挥最新解析
  19. 元宇宙火了,智能家居跟不跟?
  20. 2018 dnc .NET Core、.NET开发的大型网站列表、各大公司.NET职位精选,C#王者归来

热门文章

  1. 【计算机视觉】几个计算机视觉库
  2. hal库开启中断关中断_[STM32]HAL库下GPIO按键中断与去抖问题分析(分析源码解决问题)...
  3. 003_推箱子-事件
  4. 035_使用Enumeration遍历Vector元素
  5. 027_jdbc-mysql几个常用的日期类型
  6. 007_ServletConfig
  7. ckeditor java 使用,CKEditor5在自定义数据处理器中使用模型
  8. 野火开发版屏幕_盘一盘那些年我们常用的物联网开发板!
  9. Android SQLite数据库的详细使用
  10. Android CardView 开发过程中要注意的细节