Trilplet的表示和实现 教材例1-7

本文详细介绍了如何重新学习数据结构,通过实践案例深入理解基础概念,并提供了具体的代码实现,帮助读者巩固知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重新学习数据结构,感觉还行,坚持!

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;

#define  TRUE        1
#define  FALSE       0
#define  OK          1
#define  ERROR       0
#define  INFEASIBLE  -1
#define  OVERFLOW    -2

#define  ElemType    int     //定义数据类型为int型

typedef  int  Status;

typedef ElemType *   Triplet;

Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3){
		//构造三元组T,依次置T的3个元素的初值为v1,v2,v3.
		T = (ElemType *)malloc(3 * sizeof(ElemType));   //分配3个元素的存储空间
		if(!T) exit(OVERFLOW);   //分配存储空间失败
		T[0] = v1;
		T[1] = v2;
		T[2] = v3;
		return OK;
}//InitTriplet

Status DestroyTriplet(Triplet &T){
		//销毁三元组T。
		free(T);
		T = NULL;
		return OK;
}//DestroyTriplet

Status Get(Triplet T, int i, ElemType &e){
		//1<=i<=3,用e返回T的第i元的值
		if(i<1  ||  i>3)
				return ERROR;
		e = T[i-1];
		return OK;
}//Get

Status Put(Triplet &T, int i, ElemType e){
		//1<=i<=3,置T的第i元的值为e
		if(i<1   ||   i>3)
				return ERROR;
		T[i-1] = e;
		return OK;
}//Put

Status IsAscending(Triplet T){
		//如果T的3个元素按升序排列,则返回1,否则返回0
		return(T[0]<=T[1]) && (T[1]<=T[2]);
}//IsAscending

Status IsDescending(Triplet T){
		//如果T的3个元素按降序排列,则返回1,否则返回0
		return(T[0]>=T[1]) && (T[1]>=T[2]);
}//IsDecending

Status Max(Triplet T, ElemType &e){
		e = (T[0]>=T[1]) ? ((T[0]>=T[2]) ? T[0] : T[2]) : ((T[1]>=T[2]) ? T[1]:T[2]);
		return OK;
}//Max

Status Min(Triplet T, ElemType &e){
		e = (T[0]<=T[1]) ? ((T[0]<=T[2]) ? T[0] : T[2]) : ((T[1]<=T[2]) ? T[1]:T[2]);
		return OK;
}//Min




int main()
{
		Triplet T;
		int m;
		InitTriplet(T, 3, 5, 8);
		cout<<T[0]<<" "<<T[1]<<" "<<T[2]<<" "<<endl;
		Get(T, 2, m);
		cout<<m<<endl;
		Put(T, 2, 18);
		cout<<IsAscending(T)<<endl;
		cout<<IsDescending(T)<<endl;
		Max(T, m);
		cout<<"max:  "<<m<<endl;
		Min(T, m);
		cout<<"min:  "<<m<<endl;
		DestroyTriplet(T);
		return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值