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

数据结构与算法 同时被 2 个专栏收录
1 篇文章 0 订阅


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语言版-严蔚敏

  • 0
    点赞
  • 3
    评论
  • 11
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值