数据结构之三元组

/宏定义
#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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值