初识数据结构之三元组
三元组
一、什么是三元组
在初���了解了数据结构的研究内容后,做一个简单的尝试——三元组。
三元组是数据结构里的一个基本概念。主要是用来存储稀疏矩阵的一种压缩方式,也叫三元组表。
三元组中存放三个值(x,y,z)分别代表矩阵的行、列、值。
二、三元组抽象数据类型描述
ADT Triplet {
数据对象:D = {e1,e2,e3 | e1,e2,e3属于ElemType}
数据关系:R = { | }
基本操作:
initTriplet(&T,v1,v2,v3)
操作结果:构造一个空的三元组T。
destroyTriplet(&T)
初始条件:三元组T已存在。
操作结果:销毁三元组。
getElem(T,i,&e)
初始条件:三元组T已存在,且1 e) e = T[2]; printf("%f", e); return e; }
7、用e返回指向T的最小元素的值
ElemType getMin(Triplet T, ElemType &e) { //比较第一、二个元素,将较大值赋给e,用e与第三个元素比较,将较大值赋给e并返回。 if (T[0]8、显示三元组
Status printTriplet (Triplet &T) { int i; for (i = 0; i9、主函数
int main() { int n; int i; Triplet T; Status flag;s ElemType v0, v1, v2, e; //提示输入 printf("请进入三元组的三个值v0,v1,v2:\n"); scanf("%f%f%f", &v0, &v1, &v2); //初始化 flag = initTriplet(T, v0, v1, v2); //提示输入 printf("调用初始化函数后,flag=%d,T的三个值为%4.2f,%4.2f,%4.2f\n", flag, T[0], T[1], T[2]); printf("0 结束程序:\n"); printf("1 取三元组的任意一个分量:\n"); printf("2 置三元组的任意一个分量:\n"); printf("3 求三元组的最大分量:\n"); printf("4 求三元组的最小分量:\n"); printf("5 显示三元组:\n"); printf("6 销毁三元组:\n"); //用一个循环反复实现各种功能。 while (1) { printf("请输入你想完成的功能编号:\n"); scanf("%d", &n); if (n == 0) { break; } else { switch (n) { case 1: scanf("%d", &i); getElem (T, i, e); break; case 2: scanf("%d%f", &i, &e); putElem (T, i, e); break; case 3: getMax (T, e); break; case 4: getMin (T, e); break; case 5: printTriplet (T); break; case 6: DestroyTriplet (T); break; default: printf("没有你想完成的功能\n"); break; } } } return 0; }三元组操作实现完整代码
#include #include #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; typedef float ElemType; typedef ElemType *Triplet; Status initTriplet(Triplet &T, ElemType v0, ElemType v1, ElemType v2) { T = (Triplet)malloc(3 * sizeof(v0, v1, v2)); T[0] = v0; T[1] = v1; T[2] = v2; return OK; } Status getElem(Triplet T, int i, ElemType e) { if (i 3) return ERROR; else e = T[i - 1]; printf("%f", e); return OK; } Status putElem(Triplet T, int i, ElemType &e) { if (i 3) return ERROR; else T[i - 1] = e; printf("%f", e); return OK; } ElemType getMax(Triplet T, ElemType &e) { if (T[0] > T[1]) e = T[0]; else e = T[1]; if (T[2] > e) e = T[2]; printf("%f", e); return e; } ElemType getMin(Triplet T, ElemType &e) { if (T[0]运行结果:
The End