三元组Triplet的基本 *** 作:
typedef ElemType* Triplet; Status InitTriplet(Triplet& T, ElemType v1, ElemType v2, ElemType v3) { T = (ElemType*)malloc(3 * sizeof(ElemType)); 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; } Status Get(Triplet T, int i, ElemType& e) { if (i < 1 || i>3) return ERROR; else e = T[i - 1]; return OK; } Status Put(Triplet& T, int i, ElemType e) { if (i < 1 || i>3) return ERROR; else 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, ElemType& e) { return e = (T[0] >= T[1]) ? ((T[0] >= T[2]) ? T[0] : T[2]) : ((T[1] >= T[2]) ? T[1] : T[2]); } Status Min(Triplet T, ElemType& e) { return e = (T[0] <= T[1]) ? ((T[0] <= T[2]) ? T[0] : T[2]) : ((T[1] <= T[2]) ? T[1] : T[2]); }
主函数中测试基本函数:
int main() { Triplet T; ElemType m; InitTriplet(T, 7, 7, 7); Status i; printf("三元组元素依次为:%d,%d,%dn",T[0], T[1], T[2]); int isRound = 1; int IsRound = 1; while (isRound) { int n; printf("请输入需要查询的数的位置:"); scanf_s("%d", &n); Get(T, n, m); printf("查询的数:%dn",m); printf("继续修改请按1,退出请按0n"); scanf_s("%d", &isRound); } while (IsRound) { int n; printf("请输入需要修改数的位置:"); scanf_s("%d",&n); printf("请输入修改后的值:"); scanf_s("%d",&m); Put(T, n, m); printf("修改后的三元组为%d,%d,%dn",T[0], T[1], T[2]); printf("继续修改请按1,退出请按0n"); scanf_s("%d", &IsRound); } i = IsAscending(T); printf("三元组是否为升序的状态:%d (0为否,1为是)n", i); i = IsDescending(T); printf("三元组是否为降序的状态:%d (0为否,1为是)n", i); Min(T, m); printf("最小值为%dn",m); Max(T, m); printf("最大值为%dn",m); return 0; }
运行结果:
窗外有风景,笔下有前途,低头是题海,抬头是未来,菜鸡在努力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)