数据结构与算法三元组的代码实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构与算法三元组的代码实现相关的知识,希望对你有一定的参考价值。
开始复习数据结构和算法,好长时间没写c了,顺便复习一下
三元组的表示与实现
#include<iostream> #include <stdlib.h> using namespace std; //函数结果状态代码 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 //函数结果类型 typedef int Status; //数据元素类型 typedef int ElemType; //定义一个三元组,初始化工作有InitTriplet函数进行 typedef ElemType * Triplet; //初始化函数 Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3); //销毁函数 Status DestroyTriplet(Triplet &T); //取得三元组的第i个元素赋值给e Status Get(Triplet T, int i, ElemType &e); //改变三元组的第i个元素的值为e Status Put(Triplet &T, int i, ElemType &e); //判断三元组是否升序排列 1代表是 0代表不是 Status isAscending(Triplet T); //判断三元组是否降序排列 1代表是 0代表不是 Status isDescending(Triplet T); //用e返回三元组中最大值 Status Max(Triplet T, ElemType &e); //用e返回三元组中最小值 Status Min(Triplet T, ElemType &e); //初始化函数 Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3){ //给三元组分配空间 T = (ElemType *)malloc(3 * sizeof(ElemType)); //如果分配失败,返回overFlow结果状态 if (!T) exit(OVERFLOW); //给数组初初始化数值 T[0] = v1; T[1] = v2; T[2] = v3; //返回ok状态 return OK; } //销毁函数 Status DestroyTriplet(Triplet &T){ free(T); T = NULL; return OK; } //取得三元组的第i个元素赋值给e Status Get(Triplet T, int i, ElemType &e){ if (i<1 || i>3) return ERROR; e = T[i - 1]; return OK; } //改变三元组的第i个元素的值为e Status Put(Triplet &T, int i, ElemType &e){ if (i<1 || i>3) return ERROR; T[i - 1] = e; return OK; } //判断三元组是否升序排列 1代表是 0代表不是 Status isAscending(Triplet T){ if (T[0] > T[1] && T[1] > T[2]){ return 1; }else{ return 0; } } //判断三元组是否降序排列 1代表是 0代表不是 Status isDescending(Triplet T){ return (T[0] < T[1] && T[1] < T[2]); } //用e返回三元组中最大值 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; } //用e返回三元组中最小值 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; } void main(){ //定义一个三元组 Triplet triplet; //初始化三元组,元素分别是1,2,3 InitTriplet(triplet, 1,2,3); cout << triplet[0] << endl; int a; //将三元组的第2个元素赋值给a,所以a应该等于2 Get(triplet, 2, a); cout << a << endl; int b = 6; //将三元组的第三个元素改为6 Put(triplet, 1, b); cout << triplet[0] << endl; //应该返回0,因为三元组为6,2,3 cout << isAscending(triplet)<<endl; //也应该是 0 cout << isDescending(triplet) << endl; //最大值和最小值 int c; Max(triplet, c); int d; Min(triplet, d); cout << "最大值:"<<c <<"最小值"<< d << endl; }
运行结果
以上是关于数据结构与算法三元组的代码实现的主要内容,如果未能解决你的问题,请参考以下文章
电网知识图谱项目总结python代码实现RDF三元组自动化标注
电网知识图谱项目总结python代码实现RDF三元组自动化标注
电网知识图谱项目总结python代码实现RDF三元组自动化标注