# 【数据结构】三元组的实现—抽象数据类型

5142 简单三元组

main.cpp

/******************main.cpp*********************
测试三元组的基本操作
***********************************************/
#include <iomanip>
#include <iostream>
#include "Triplet.h"
using namespace std;

int main()
{
cout<<"请输入三个元素构造一个三元组："<<endl;
ElemType e1,e2,e3;
cin>>e1>>e2>>e3;
Triplet T;
if(InitTriplet(T,e1,e2,e3))
{
cout<<"创建成功"<<endl;
Traverse(T);
}
else
{
cout<<"创建失败"<<endl;
return 1;
}
cout<<"请输入整数i来查询第i个元素(1<=i<=3)："<<endl;
int i;
cin>>i;
ElemType e;
if(!Get(T,i,e))
cout<<"查询失败"<<endl;
else
{
cout<<"第"<<i<<"个数为"<<e<<endl;
}
cout<<"请输入要改变的元素i及改变后的数值e："<<endl;
cin>>i>>e;
if(!Put(T,i,e))
cout<<"改变失败"<<endl;
else
{
cout<<"改变成功"<<endl;
Traverse(T);
}
if(IsAscending(T))
cout<<"三个元素升序排列"<<endl;
else
cout<<"三个元素不是升序排列"<<endl;
if(IsDescending(T))
cout<<"三个元素降序排列"<<endl;
else
cout<<"三个元素不是降序排列"<<endl;
if(Max(T,e))
cout<<"三个元素最大值为"<<e<<endl;
else
cout<<"查询最大值失败"<<endl;
if(Min(T,e))
cout<<"三个元素最小值为"<<e<<endl;
else
cout<<"查询最小值失败"<<endl;
if(DestroyTriplet(T))
cout<<"三元组已被销毁"<<endl;
else
cout<<"三元组销毁失败"<<endl;
return 0;
}



Triplet.h

/***************Triplet.h*********************
三元组的数据定义已经基本操作说明
***********************************************/
//ElemType的类型定义
typedef int ElemType;
//三元组类型定义
typedef ElemType *Triplet;
//Status的类型定义
typedef ElemType Status;
const int TRUE = 1;
const int FALSE = 0;
const int OK = 1;
const int ERROR = 0;
const int INFEASIBLE = -1;
const int OVERFLOW = -2;

//三元组基本操作函数声明
Status InitTriplet(Triplet &T, ElemType v1,ElemType v2,ElemType v3);
Status Get(Triplet T ,int i, ElemType &e);
Status Put(Triplet &T,int i,ElemType e);
Status IsAscending(Triplet &T);
Status IsDscending(Triplet &T);
Status Max(Triplet &T, ElemType &e);
Status Min(Triplet &T, ElemType &e);
Status DestroyTriplet(Triplet &T);



Triplet.cpp

/***************Triplet.cpp*********************
三元组的基本操作实现
***********************************************/
#include <iostream>
#include "Triplet.h"
using namespace std;

//三元组基本操作函数定义
Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3)
{
T = new ElemType[3];//分配三个主存空间
if (!T) return OVERFLOW;//分配空间失败
T[0] =  v1; T[1] = v2; T[2] = v3;//赋值
return OK;
}//InitTriplet
Status Get(Triplet T, int i, ElemType &e )
{
//查找第i个元素 返回e
if (i<1||i>3) return ERROR;//查找失败
e = T[i-1];//查找值
return OK;
}//GetTriplet
Status Put(Triplet &T,int i,ElemType e)
{
//把T的第i个元素改为e；
if (i<1||i>3) return ERROR;//修改失败
T [i-1] = e;//修改为e
return OK;
}//Put
Status IsAscending(Triplet &T)
{
if(T[0]>T[1]||T[1]>T[2])
return ERROR;
return OK;
}
Status IsDescending(Triplet &T)
{
if(T[0]<T[1]||T[1]<T[2])
return ERROR;
return OK;
}
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;
}
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;
}
Status DestroyTriplet(Triplet &T)
{
delete T;
return OK;
}
void Traverse(Triplet T)
{
cout<<"三元组为：("<< T[0] << "," << T[1] << "," << T[2] << ")"<<endl;
}//Traverse



• 0
点赞
• 0
评论
• 8
收藏
• 一键三连
• 扫一扫，分享海报

07-20 1800
04-13 3307
04-04 4337
03-28 985
01-03 5198
04-20
03-17 1万+
03-30 538
12-06 8356
04-27 1047
©️2021 CSDN 皮肤主题: 1024 设计师:白松林

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