创建一个三元组

// Triplet.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "stdlib.h"
#define OK 1
#define ERROE 0

typedef int Status;

typedef int *Triplet;//定义Triplet为指针类型;

void main()
{

//构造三元组
Status InitTriplet(Triplet &T, int v1, int v2, int v3);

//销毁三元组
Status DestroyTriplet(Triplet &T);

//返回三元组的第i个元素并保存在变量e中
Status Get(Triplet T, int i, int &e);

//将三元组下标为为i的值替换为e
Status Put(Triplet &T,int i,int e);

//判断三元组是否是升序排列
Status IsAcending(Triplet T);

//判断三元组是否是降序排列
Status IsDcending(Triplet T);

//找出三元组中的最大值并保存在e中
Status Max(Triplet T,int &e);
//找出三元组中的最小值并保存在e中
Status Min(Triplet T, int &e);

Triplet T;
int a = 1, b = 2, c = 3,e,max,min;
//初始化三元组
InitTriplet(T,a,b,c);
Get(T, 1, e);
Put(T,1,-1);

Max(T,max);

Min(T,min);

printf("当前元素的值为%d\n",e);

printf("当前三元组中的最大值为%d\n",max);

printf("当前三元组中的最小值为%d\n",min);

}

//初始化三元组
Status InitTriplet(Triplet &T,int v1,int v2,int v3) {

T = (int *)malloc(sizeof(int)*3);

T[0] = v1;
T[1] = v2;
T[2] = v3;

if (T == NULL) {
exit(EOVERFLOW);
}

return OK;

}
//销毁三元组
Status Destroy(Triplet &T) {

free(T);
return OK;
}

//根据下标获取三元组下标的值
Status Get(Triplet T, int i, int &e) {
if (i < 1 || i>3) {

return ERROE;

}
e = T[i-1];
return e;
}
//向三元组添加元素
Status Put(Triplet &T,int i,int e) {
if (i < 1 || i>3) {
return ERROE;
}
T[i-1] =e ;
return OK;

}

//判断三元组是否是升序排列
Status IsAcending(Triplet T) {
if (T[0] < T[1] && T[1] < T[2]) {
return OK;
}
return ERROE;
}

//判断三元组是否是降序排列
Status IsDcending(Triplet T) {
if (T[0] > T[1] && T[1] > T[2]) {
return OK;
}
return ERROE;
}

//获取三元组中的最大值
Status Max(Triplet T,int &max) {

max = T[0];
for (int i = 1; i <3; i++)
{
if (max < T[i]) {
max = T[i];
}
}
return OK;

}

//获取三元组中的最小值
Status Min(Triplet T,int &min) {
min = T[0];
for (int i = 0; i <3; i++)
{
if (min > T[i]) {
min = T[i];
}

}

return OK;

}

 

posted on 2017-09-12 19:42  paulversion  阅读(2123)  评论(0编辑  收藏  举报