C语言实现三元组抽象数据类型Triplet



Triplet.c:

#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
//----------采用动态分配的顺序存储结构--------- 
typedef ElemType *Triplet;//由InitTriplet分配3个元素存储空间 
Status InitTriplet(Triplet &T,ElemType v1,ElemType v2,ElemType v3)
{
	//构造三元组T,依次置T的3个元素的初值为v1,v2和v3。 
	T=(ElemType*)malloc(3*sizeof(ElemType));//分配3个元素的存储空间
	if(!T)exit(OVERFLOW); //分配存储空间失败
	T[0]=v1; T[1]=v2; T[2]=v3; 
	return OK;
} //InitTriplet
Status DestoryTriplet(Triplet &T)
{
	//销毁三元组T。 
	free(T);T=NULL;
	return OK;
} //DestoryTriplet
Status Get(Triplet T,int i,ElemType &e)
{
	//1<=i<=3,用e返回T的第i元的值。
	if(i<1||i>3)return ERROR; 
	e=T[i-1];
	return OK;
} //Get
Status Put(Triplet &T,int i,ElemType e)
{
	//1<=i<=3,置T的第i元的值为e。  
	if(i<1||i>3)return ERROR; 
	T[i-1]=e;
	return OK;
} //Put
Status IsAscending(Triplet T)
{
	//如果T的3个元素按升序排列,则返回1,否则返回0。 
	return (T[0]<=T[1])&&(T[1]<=T[2]);
} //IsAscending
Status IsDescending(Triplet T)
{
	//如果T的3个元素按降序排列,则返回1,否则返回0。 
	return (T[0]>=T[1])&&(T[1]>=T[2]);
} //IsDescending
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;
} //Max
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;
} //Min
int main(){
	Triplet T;
	ElemType e,e1,e2,e3;
	e1=3;e2=5;e3=7;
//	e1=7;e2=3;e3=5;
//	e1=7;e2=5;e3=3;
	InitTriplet(T,e1,e2,e3);
	printf("IsAscending=%d\n",IsAscending(T));
	printf("IsDescending=%d\n",IsDescending(T));
	Max(T,e);printf("Max=%d\n",e);
	Min(T,e);printf("Min=%d\n",e);
	Get(T,2,e);printf("e2=%d\n",e);
	e=1;Put(T,2,e);printf("e2=%d\n",e);
	DestoryTriplet(T);
	return 0;
}

参考书籍:数据结构C语言版-严蔚敏

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值