三元组的使用

#include<stdio.h>
#include<stdlib.h>
int InitTriplet(int **T,int v1,int v2,int v3)
{
    *T=(int*)malloc(3*sizeof(int));
    if(!*T)
    {
        printf("分配空间失败!\n");
        exit(-1);
    }
    (*T)[0]=v1,(*T)[1]=v2,(*T)[2]=v3;
    return 1;
}

int DestoryTriplet(int **T)
{
    free(*T);
    *T=NULL;
    return 1;
}        

int Get(int *T,int i,int *e)
{
    if(i<1||i>3)
    {
        printf("不存在要获取的第%d位字符\n",i);
        exit(-1);
    }
    *e=T[i-1];
    return 1;
}

int Put(int **T,int i,int e)
{
    if(i<1||i>3)
    {
        printf("不存在要修改第%d位的字符\n",i);
        exit(-1);
    }
    (*T)[i-1]=e;
    return 1;
}

int IsAscending(int *T)
{
    if(T[0]<T[1]&&T[1]<T[2])
        return 1;
    else
        return 0;
}
int IsDescending(int *T)
{
    if(T[0]>T[1]&&T[1]>T[2])
        return 1;
    else
        return 0;
}
int Max(int *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 1;
}
int main()
{
    int *T;
    int i,e0;
    
    InitTriplet(&T,2,4,8);
    for(i=1;i<=3;i++)
    {
        Get(T,i,&e0);
        printf("%d ",e0);
    }
    printf("\n");

    Put(&T,1,0);
    for(i=1;i<=3;i++)
    {
        Get(T,i,&e0);
        printf("%d ",e0);
    }
    printf("\n");        
    
    printf("该三元组是否依次递增:%d,(1,是;0否)\n",IsAscending(T));

    Max(T,&e0);
    printf("该三元组中的最大值是%d\n",e0);

    DestoryTriplet(&T);
    
    return 0;
}

posted @ 2016-05-07 23:48  小宏~  阅读(246)  评论(0)    收藏  举报