练习了一下数据结构中的三元组,代码看着挺整齐的删除了可惜,保存着没有什么用,放到这里吧。
#include <stdio.h>
#include <alloc.h>
typedef struct Triplet
{
int a;
int b;
int c;
}Triplet;
void InitTriplet(Triplet *t,int a,int b,int c)
{
(*t).a=a;
(*t).b=b;
(*t).c=c;
}
void DestroyTriplet(Triplet *t)
{
free(t);
}
void Get(Triplet *t,int index,int *data)
{
switch(index)
{
case 1:
*data=(*t).a;
break;
case 2:
*data=(*t).b;
break;
case 3:
*data=(*t).c;
break;
default:
*data=-1;
break;
}
}
void Put(Triplet *t,int index,int data)
{
switch(index)
{
case 1:
(*t).a=data;
break;
case 2:
(*t).b=data;
break;
case 3:
(*t).c=data;
break;
default:
break;
}
}
int IsAscending(Triplet *t)
{
return (*t).a<=(*t).b&&(*t).b<=(*t).c?1:0;
}
int IsDescending(Triplet *t)
{
return (*t).a>=(*t).b&&(*t).b>=(*t).c?1:0;
}
int Max(Triplet *t)
{
if((*t).a>(*t).b)
{
if((*t).a>(*t).c)
{
return (*t).a;
}
else
{
return (*t).c;
}
}
else
{
if((*t).b>(*t).c)
{
return (*t).b;
}
else
{
return (*t).c;
}
}
}
int Min(Triplet *t)
{
if((*t).a<(*t).b)
{
if((*t).a<(*t).c)
{
return (*t).a;
}
else
{
return (*t).c;
}
}
else
{
if((*t).b<(*t).c)
{
return (*t).b;
}
else
{
return (*t).c;
}
}
}
int main()
{
int getData;
Triplet *t=(Triplet *)malloc(sizeof(Triplet )*1);
InitTriplet(t,1,2,3);
Get(t,2,&getData);
printf("%d\n",getData);
Put(t,3,3);
printf("%d\t",IsAscending(t));
printf("%d\t",IsDescending(t));
printf("%d\t",Max(t));
printf("%d\t",Min(t));
DestroyTriplet(t);
return 0;
}