#include "../include/Db.h"
/****************************************
* 函数名称:
Status InitTriplet(Triplet *T, ElemType v1, ElemType v2, ElemType v3)
* 功能描述:
创建堆空间,并为各元素赋值
* 输入参数:
T--存储堆空间的首地址
v1,v2,v3--将三元组中的各个元素分别赋值v1,v2,v3
* 输出参数:无
* 返回值:
OK
* 算法说明:无
****************************************/
Status InitTriplet(Triplet *T, ElemType v1, ElemType v2, ElemType v3)
{
*T= (ElemType *)Malloc(3, sizeof(ElemType));
*(*T) = v1;
*(*T+1) = v2;
*(*T+2) = v3;
return OK;
}
/****************************************
* 函数名称:
Status DestroyTriplet(Triplet *T)
* 功能描述:
销毁申请的堆空间。
* 输入参数:
T--存储堆空间的首地址
* 输出参数:无
* 返回值:
OK
* 算法说明:无
****************************************/
Status DestroyTriplet(Triplet *T)
{
assert(T != NULL);
Free((void **)T);
return OK;
}
/****************************************
* 函数名称:
Status Get(Triplet T, int i, ElemType *e)
* 功能描述:
获取三元组中指定元素的值
* 输入参数:
T--存储堆空间的首地址
i--元素序号
* 输出参数:
e- 存储获取的数值
* 返回值:
OK
* 算法说明:无
****************************************/
Status Get(Triplet T, int i, ElemType *e)
{
assert(T!=NULL);
assert( (i>=0) && (i<=2) );
*e = T[i];
return OK;
}
/****************************************
* 函数名称:
Status Put(Triplet *T, int i, ElemType e)
* 功能描述:
设置三元组中指定元素的值
* 输入参数:
T--存储堆空间的首地址
i--元素序号
e-存储需要设置的元素的数值
* 输出参数:无
* 返回值:
OK
* 算法说明:无
****************************************/
Status Put(Triplet *T, int i, ElemType e)
{
assert(*T != NULL);
assert((i>=0) && (i<=2));
*(*T+i) = e;
return OK;
}
/****************************************
* 函数名称:
Status IsAscending(Triplet T)
* 功能描述:
判断三元组元素是否为递增序列
* 输入参数:
T--存储堆空间的首地址
* 输出参数:无
* 返回值:
TRUE
FALSE
* 算法说明:无
****************************************/
Status IsAscending(Triplet T)
{
assert(T!=NULL);
if((T[0]<=T[1]) && (T[1]<=T[2]))
{
return TRUE;
}
return FALSE;
}
/****************************************
* 函数名称:
Status IsDescending(Triplet T)
* 功能描述:
判断三元组元素是否为递减序列
* 输入参数:
T--存储堆空间的首地址
* 输出参数:无
* 返回值:
TRUE
FALSE
* 算法说明:无
****************************************/
Status IsDescending(Triplet T)
{
assert(T!=NULL);
if((T[0]>=T[1]) && (T[1]>=T[2]))
{
return TRUE;
}
return FALSE;
}
/****************************************
* 函数名称:
Status Max(Triplet T, ElemType *e)
* 功能描述:
获取三元组中的最大值
* 输入参数:
T--存储堆空间的首地址
* 输出参数:
e--存储最大值
* 返回值:
OK
* 算法说明:
先选择两个元素比较,将较大者与第三个元素比较,选出较大者
****************************************/
Status Max(Triplet T, ElemType *e)
{
assert(T != NULL);
*e = (T[0]>=T[1])
?(T[0]>=T[2]?T[0]:T[2])
:(T[1]>=T[2]?T[1]:T[2]);
return OK;
}
/****************************************
* 函数名称:
Status Min(Triplet T, ElemType *e)
* 功能描述:
获取三元组中的最小值
* 输入参数:
T--存储堆空间的首地址
* 输出参数:
e--存储最大值
* 返回值:
OK
* 算法说明:
先选择两个元素比较,将较小者与第三个元素比较,选出较小者
****************************************/
Status Min(Triplet T, ElemType *e)
{
assert(T != NULL);
*e = (T[0]<=T[1])
?(T[0]<=T[2]?T[0]:T[2])
:(T[1]<=T[2]?T[1]:T[2]);
return OK;
}
Status TripletTest(void)
{
Triplet localTriplet = NULL;
ElemType val = 0;
InitTriplet(&localTriplet, 4, 5, 6);
int i = 0;
printf("The Triplet is:");
for(i=0; i<3; i++)
{
Get(localTriplet, i, &val);
printf(" %d",val);
}
printf(".\n");
if(IsAscending(localTriplet) == TRUE)
{
LogMsg("The Triplet is ascending.");
}
Max(localTriplet, &val);
LogMsg("The MAX val is %d.",val);
Min(localTriplet, &val);
LogMsg("The MIN val is %d.",val);
printf("The Triplet is:");
for(i=0; i<3; i++)
{
Put(&localTriplet, i, 5-i);
printf(" %d",4-i);
}
printf(".\n");
if(IsDescending(localTriplet) == TRUE)
{
LogMsg("The Triplet is descending.");
}
DestroyTriplet(&localTriplet);
return OK;
}
|