数据结构(C语言版)课后复习

三元组Triplet的基本操作: 

typedef ElemType* Triplet;

Status InitTriplet(Triplet& T, ElemType v1, ElemType v2, ElemType v3)
{
	T = (ElemType*)malloc(3 * sizeof(ElemType));
	if (!T) exit(OVERFLOW);
	T[0] = v1;
	T[1] = v2;
	T[2] = v3;
	return OK;
}
Status DestroyTriplet(Triplet& T)
{
	free(T);
	T = NULL;
	return OK;
}
Status Get(Triplet T, int i, ElemType& e)
{
	if (i < 1 || i>3) return ERROR;
	else e = T[i - 1];
	return OK;
}
Status Put(Triplet& T, int i, ElemType e)
{
	if (i < 1 || i>3) return ERROR;
	else T[i - 1] = e;
	return OK;
}
Status IsAscending(Triplet T)
{
	return (T[0] <= T[1] && T[1] < T[2]);
}
Status IsDescending(Triplet T)
{
	return (T[0] > T[1] && T[1] > T[2]);
}
Status Max(Triplet T, ElemType& e)
{
	return e = (T[0] >= T[1]) ? ((T[0] >= T[2]) ? T[0] : T[2]) : ((T[1] >= T[2]) ? T[1] : T[2]);
}
Status Min(Triplet T, ElemType& e)
{
	return e = (T[0] <= T[1]) ? ((T[0] <= T[2]) ? T[0] : T[2]) : ((T[1] <= T[2]) ? T[1] : T[2]);
}

 主函数中测试基本函数:

int main()
{
	Triplet T;
	ElemType m;
	InitTriplet(T, 7, 7, 7);
	Status i;
	printf("三元组元素依次为:%d,%d,%d\n",T[0], T[1], T[2]);
	int isRound = 1;
	int IsRound = 1;
	while (isRound)
	{
		int n;
		printf("请输入需要查询的数的位置:");
		scanf_s("%d", &n);
		Get(T, n, m);
		printf("查询的数:%d\n",m);
		printf("继续修改请按1,退出请按0\n");
		scanf_s("%d", &isRound);
	}
	while (IsRound)
	{
		int n;
		printf("请输入需要修改数的位置:");
		scanf_s("%d",&n);
		printf("请输入修改后的值:");
		scanf_s("%d",&m);
		Put(T, n, m);
		printf("修改后的三元组为%d,%d,%d\n",T[0], T[1], T[2]);
		printf("继续修改请按1,退出请按0\n");
		scanf_s("%d", &IsRound);
	}
	i = IsAscending(T);
	printf("三元组是否为升序的状态:%d (0为否,1为是)\n", i);
	i = IsDescending(T);
	printf("三元组是否为降序的状态:%d (0为否,1为是)\n", i);
	Min(T, m);
	printf("最小值为%d\n",m);
	Max(T, m);
	printf("最大值为%d\n",m);
	return 0;
}

运行结果:


 窗外有风景,笔下有前途,低头是题海,抬头是未来,菜鸡在努力!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值