数据结构三元组ADTC语言实现代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

}

相关文档
最新文档