数据结构三元组ADTC语言实现代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include"stdio.h"//定义输入输出函数
#include"stdlib.h"//定义杂项函数及内存分布函数atoi(),exit()
#include"malloc.h"//malloc()等
#include"math.h"//OVERFLOW
#define OK 1
#define ERROR 0
typedef int Status; //定义int类型的同义名status
typedef int ElemType;
typedef ElemType *Triplet; //由InitTriplet分配3个元素存储空间
Status InitTriplet(Triplet *T,ElemType v1,ElemType v2,ElemType 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) //销毁三元组
{
free(*T);
*T=NULL;
return OK;
}
Status Get(Triplet T,int i, ElemType *e)//用e返回第i元的值
{
if(i<1||i>3) return ERROR;
*e=T[i-1];
return OK;
}
Status Put(Triplet T,int i,ElemType e)
{
if(i<1||i>3) return ERROR;
T[i-1]=e; //
return OK;
}
Status IsAscending(Triplet T)//按升序排列则返回1
{
return(T[0]<=T[1]&&T[1]<=T[2]);
}
Status IsDescending(Triplet T)//按降序排列则返回1
{
return(T[0]>=T[1]&&T[1]>=T[2]);
}
Status Max(Triplet T,ElemType *e) //用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)//用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 main()
{
Triplet T;
ElemType m;
Status i;
i=InitTriplet(&T,5,7,9);
printf("调用初始化函数后,i=%d(1:成功) T的三个值
为:%d %d %d\n",i,T[0],T[1],T[2]);
i=Get(T,2,&m);
if(i==OK) printf("T的第2个值为:%d\n",m);
i=Put(T,2,6);
if(i==OK) printf("将T的第2个值改为6后,T的三个值
为:%d %d %d\n",T[0],T[1],T[2]);
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中的最大值为:%d\n",m);
if((i=Min(T,&m))==OK) printf("T中的最小值为:%d\n",m);
DestroyTriplet(&T); printf("销毁T后,T=%u(NULL)\n",T);
}