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

实验1 抽象数据类型
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
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值