2、,移动6次2、抽象数据类型三元组的定义、表示和实现【解答】抽象数据类型三元组的定义已经给出(见教材12页),要求设计实现三元组基本操作的演示程序。#include#includetypedefintElemType;typedefElemType*Triplet;typedefintStatus;#defineOK1#defineERROR0#defineOVERFLOW-2StatusInitTriplet(Triplet*T){ElemTypev1,v2,v3;*T=(ElemType
3、*)malloc(3*sizeof(ElemType));if(*T==0)return(OVERFLOW);scanf("%d,%d,%d",&v1,&v2,&v3);(*T)[0]=v1;(*T)[1]=v2;(*T)[2]=v3;}StatusDestroyTriplet(Triplet*T){free(*T);*T=NULL;}StatusGet(TripletT,inti,ElemType*e){if(i<1
4、
5、i>3)returnERROR;*e=T[i-1];returnOK;}StatusPut(Triplet
6、T,inti,ElemTypee){if(i<1
7、
8、i>3)returnERROR;(*T)[i-1]=e;returnOK;}StatusIsAscending(TripletT){return((T[0]T[1])&&(T[1]>T[2]));}StatusMax(TripletT,ElemType*e){*e=(T[0]>=T[1]?((T[0]>=T[2])?T[0]:T[2]):((T[1]
9、>=T[2])?T[1]:T[2]);returnOK;}StatusMin(TripletT,ElemType*e){*e=(T[0]<=T[1]?((T[0]<=T[2])?T[0]:T[2]):((T[1]<=T[2])?T[1]:T[2]);returnOK;}voidmain(){TripletT;ElemTypee;intselect,i;printf("请输入三个数,建立一个三元组:");if(InitTriplet(&T)==OVERFLOW)printf("存储空间分配失败,退出程序");else{d
10、o{printf("1:取三元组第I个元素");printf("2:修改三元组第I个元素");printf("3:判断三元组元素是否递增");printf("4:判断三元组元素是否递减");printf("5:取三元组最大元");printf("6:取三元组最小元");printf("0:结束");scanf("&d",&select);switch(select){case1:printf("i=");scanf("%d",&i);if(Get(T,i,&e)==ERROR)printf("I
11、值输入不合法");elseprintf("第I个元素的值为%d",e);break;case2:printf("i=");scanf("%d",&i);printf("e=");scanf("%d",&e);if(Put(T,i,e)==ERROR)pprintf("I值输入不合法");elseprintf("新三元组为:%4d%4d%4d",T[0],T[1],T[2]);break;case3:if(IsAscending(T)==1)printf("三元组递增有序");elseprintf("
12、三元组非递增");break;case4:if(IsDescending(T)==1)printf("三元组递减有序");elseprintf("三元组非递减");break;case5:Max(T,&e);printf("三元组的最大元为%d",e);bre