Trilplet的表示和实现 教材例1-7
重新学习数据结构,感觉还行,坚持!
#include<iostream>#include<stdio.h>#include<stdlib.h>using namespace std;#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2#define ElemType int //定义数据类型为int型typedef int Status;typedef ElemType * Triplet;Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3){//构造三元组T,依次置T的3个元素的初值为v1,v2,v3.T = (ElemType *)malloc(3 * sizeof(ElemType)); //分配3个元素的存储空间if(!T) exit(OVERFLOW); //分配存储空间失败T[0] = v1;T[1] = v2;T[2] = v3;return OK;}//InitTripletStatus DestroyTriplet(Triplet &T){//销毁三元组T。free(T);T = NULL;return OK;}//DestroyTripletStatus Get(Triplet T, int i, ElemType &e){//1<=i<=3,用e返回T的第i元的值if(i<1 || i>3)return ERROR;e = T[i-1];return OK;}//GetStatus Put(Triplet &T, int i, ElemType e){//1<=i<=3,置T的第i元的值为eif(i<1 || i>3)return ERROR;T[i-1] = e;return OK;}//PutStatus IsAscending(Triplet T){//如果T的3个元素按升序排列,则返回1,否则返回0return(T[0]<=T[1]) && (T[1]<=T[2]);}//IsAscendingStatus IsDescending(Triplet T){//如果T的3个元素按降序排列,则返回1,否则返回0return(T[0]>=T[1]) && (T[1]>=T[2]);}//IsDecendingStatus 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;}//MaxStatus 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;}//Minint main(){Triplet T;int m;InitTriplet(T, 3, 5, 8);cout<<T[0]<<" "<<T[1]<<" "<<T[2]<<" "<<endl;Get(T, 2, m);cout<<m<<endl;Put(T, 2, 18);cout<<IsAscending(T)<<endl;cout<<IsDescending(T)<<endl;Max(T, m);cout<<"max: "<<m<<endl;Min(T, m);cout<<"min: "<<m<<endl;DestroyTriplet(T);return 0;}