1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 抽象数据类型Triplet的C语言实现

抽象数据类型Triplet的C语言实现

时间:2018-11-30 12:47:59

相关推荐

抽象数据类型Triplet的C语言实现

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。