C指针-三元组定义及操作

#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1 //infeasible
#define OVERFLOW -2   //overflow 
typedef int Status;
typedef int ElemType;
typedef ElemType* Triplet;
Status initTriplet(Triplet &T, ElemType a, ElemType b, ElemType c);
Status destoryTriplet(Triplet &T);
Status get(Triplet T,int index,ElemType &e);
Status put(Triplet &T,int index,ElemType e);
Status isAscending(Triplet T);
Status isDescending(Triplet T);
Status Max(Triplet T,ElemType &e);
Status Min(Triplet T,ElemType &e);

Status initTriplet(Triplet &T, ElemType a, ElemType b, ElemType c)
{
	T=(ElemType*)malloc(3*sizeof(ElemType));
	if(!T)
	exit(INFEASIBLE);
	T[0]=a;
	T[1]=b;
	T[2]=c;
	return OK;
}
Status destoryTriplet(Triplet &T)
{
	free(T);
	T=NULL;
	return OK;
}
Status get(Triplet T,int index,ElemType &e)
{
	if(index<1 || index>3)
	return ERROR;
	e=T[index-1];
	return OK;
}
Status put(Triplet &T,int index,ElemType e)
{
	if(index<1 || index>3)
	return ERROR;
	T[index-1]=e;
	return OK;
}
Status isAscending(Triplet T)
{
	return T[0]<=T[1] && T[1]<=T[2];
}
Status isDescending(Triplet T)
{
	return T[0]>=T[1] && T[1]>=T[2];
}
Status Max(Triplet T,ElemType &e)
{
	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[0]<=T[1]?(T[0]<=T[2]?T[0]:T[2]):(T[1]<=T[2]?T[1]:T[2]);
	return OK;
}
int main()
{   int e=3,f=4,g=0;
	Triplet t;
	initTriplet(t,8,9,10);
	get(t,1,e);
	put(t,2,f);//8 4 10
	g=isAscending(t);
	printf("是否升序  %d\n",g);
	g=isDescending(t);
	printf("是否降序  %d\n",g);
	Max(t,g);
	printf("MAX=%d\n",g);
	Min(t,g);
	printf("MIN=%d\n",g);
	destoryTriplet(t);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静安书以沫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值