/宏定义
#define TRUE 1
#define OK 1
#define ERROR 0
#define FASE 0
#define INFEASIBLE -1
#define OVERFLOW -2
//头文件
#include<stdlib.h>
#include<stdio.h>
typedef int Status;
typedef int *Triplet;
//初始化三元组
int initTriplet(Triplet &T, int v1, int v2, int v3)
{
T = (int *)malloc(3 * sizeof(int));
if (!T)
{
exit(OVERFLOW);
}
T[0] = v1;
T[1] = v2;
T[2] = v3;
return OK;
}
//销毁三元组
int destroyTriplet(Triplet &T)
{
free(T);
T= NULL;
return OK;
}
//获取三元组中的值
int get(Triplet T, int i, int &e)
{
if (i < 1 || i>3)return ERROR;
e = T[i - 1];
return OK;
}
//向三元组中插入值
int put(Triplet T, int i, int e)
{
if (i < 1 || i>3)return ERROR;
T[i - 1] = e;
return OK;
}
//判断是否升序
int isAscending(Triplet T)
{
return T[0] <= T[1] && T[1] <= T[2];
return OK;
}
//判断是否降序
int isDscending(Triplet T)
{
return T[0] >= T[1] && T[1] >= T[2];
return OK;
}
//求三元组中的最大值
int max(Triplet T, int &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 min(Triplet T, int &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 *t = NULL;
int e;
initTriplet(t,1,2,3);
get(t, 1, e);
printf("%d %d %d\n", e,t[1],t[2]);
put(t, 1, 4);
printf("%d %d %d\n", t[0], t[1], t[2]);
initTriplet(t, 1, 2, 3);
if (isAscending(t))printf("YES\n");
initTriplet(t, 3, 2, 1);
if (isDscending(t))printf("YES\n");
max(t, e);
printf("%d\n",e);
min(t, e);
printf("%d\n", e);
}
数据结构之三元组
最新推荐文章于 2023-04-25 20:36:56 发布