数据结构三元组基本操作代码

#include "Triplet.h"
using namespace std;
#include<iomanip>//c++保留小数头文件 
int main()
{
    int i;
    DataType v1,v2,v3,e;
    float f;
    Triplet T;
    menu();
    int select;
    do
    {
        cout<<"\n>>>请选择你需要的操作:";
        cin>>select;
        switch(select)
        {
        case 1:
            cout<<"请输入三元组的三个值:"<<endl;
            cin>>v1>>v2>>v3;
            if(InitTriplet(T,v1,v2,v3))
            {
            	cout<<"创建成功!"<<endl;
			}
            else 
			{
				cout<<"创建失败!!!"<<endl;	
			}
            break;
        case 2:
            if(DestroyTriplet(T))
            {
            	cout<<"销毁成功!"<<endl;
			}
            else 
			{
				cout<<"销毁失败!"<<endl;	
			}
            break;
        case 3:
            cout<<"请输入你想查找的位置:";
            cin>>i;
            Get(T,i,e);
            cout<<"该位置的元素是:"<<e<<endl;
            break;
        case 4:
            cout<<"请输入你想修改的位置:"<<endl;
            cin>>i;
            cout<<"请输入您想要修改为什么:"<<endl;
			cin>>e; 
            Put(T,i,e);
            cout<<"该位置的元素变为"<<e<<endl;
            break;
        case 5:
            if(IsAscending(T))cout<<"升序!"<<endl;
            else cout<<"不升序!"<<endl;
            break;
        case 6:
            if(IsDescending(T))cout<<"降序!"<<endl;
            else cout<<"不降序!"<<endl;
            break;
        case 7:
            Max(T,e);
            cout<<"三元组的最大值是:"<<e<<endl;
            break;
        case 8:
            Min(T,e);
            cout<<"三元组的最小值是:"<<e<<endl;
            break;
        case 9:
            Average(T,f);
            cout.setf(ios::fixed);//保证输出是两位小数,头文件是 #include<iomanip>
            cout<<"三元组的平均值是:"<<fixed<<setprecision(2)<<f<<endl;
            break;
        case 0:
            exit(1);
        default:
            cout<<"输入错误!"<<endl;
            break;
        }
    }
    while(select);
    return 0;
}

#include "Triplet.h"
using namespace std;
status InitTriplet(Triplet &T,DataType v1,DataType v2,DataType v3){
    T = (DataType*)malloc(3*sizeof(DataType));
    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;
}

//得到第i个数(1<=i<=3)
status Get(Triplet &T,int i,DataType &e){
    if(i<1||i>3)return ERROR;
    e = T[i-1];
    return OK;
}

//修改第i个数为e
status Put(Triplet &T,int i,DataType e){
    if(i<1||i>3)return ERROR;
    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,DataType &e){
    if(T[0]>T[1]){
        if(T[0]>T[2])e=T[0];
        else e=T[2];
    }else{
        if(T[1]>T[2])e=T[1];
        else e=T[2];
    }
    return OK;
}

//最小值
status Min(Triplet T,DataType &e){
    if(T[0]<T[1]){
        if(T[0]<T[2])e=T[0];
        else e=T[2];
    }else{
        if(T[1]<T[2])e=T[1];
        else e=T[2];
    }
    return OK;
}

//求平均值
status Average(Triplet T,float &f){
    f=(T[0]+T[1]+T[2])*1.0/3;
}

//菜单
void menu()
{
        cout<<"\t*******************请选择的操作******************************\n"
			  "\t*                                                           *\n"
			  "\t*              1.建立一个三元组                             *\n"
			  "\t*              2.销毁一个三元组                             *\n"
			  "\t*              3:取三元组第i个元素                          *\n"
			  "\t*              4:置换第i个元素                              *\n"	
			  "\t*              5:查看三元组是否升序                         *\n"
	          "\t*              6:查看三元组是否降序                         *\n"
	          "\t*              7:查找三元组的最大值                         *\n"
	          "\t*              8:查找三元组的最小值                         *\n"
	          "\t*              9.取三元组的平均值                           *\n"
	          "\t*              0:结束!                                     *\n"
	          "\t*                                                           *\n"
	          "\t*************************************************************\n"
        <<endl;
}

#ifndef TRIIPLET_H_INCLUDED
#define TRIIPLET_H_INCLUDED

#include<bits/stdc++.h>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
//#define OVERFLOW -2

typedef int status;
typedef float DataType;//可更该为int或float; 
typedef DataType* Triplet;

//初始化
status InitTriplet(Triplet &T,DataType v1,DataType v2,DataType v3);
//销毁
status DestroyTriplet(Triplet &T);
//得到第i个数(1<=i<=3)
status Get(Triplet &T,int i,DataType &e);  
//修改第i个数为e
status Put(Triplet &T,int i,DataType e);  
//是否升序
status IsAscending(Triplet T);
//是否降序
status IsDescending(Triplet T);
//最大值
status Max(Triplet T,DataType &e);
//最小值
status Min(Triplet T,DataType &e);
//求平均值          
status Average(Triplet T,float &f); 
//菜单     
void menu();

#endif // TRIIPLET_H_INCLUDED

三元组的操作是数据结构的基本操作,可以为我们后面的数据结构打下基础。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值