c1.h

#include <string.h>
#include <ctype.h>
#include <malloc.h> //malloc()等
#include <limits.h> //INT MAX等
#include <stdio.h> //EOF(=Z或F6),NULL
#include <stdlib.h> //atoi()
#include <io.h> //eof()
#include <math.h> //floor(),ceil(),abs()
#include <process.h> //exit()
#include <iostream.h> //cout ,cin
//函数结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
//#define OVERFLOW 2 因为在math.h中已定义OVERFLOW的值为3,故去掉此行
typedef int Status;//Status是函数类型,其值是函数结果状态代码,如OK等
typedef int Boolean;//Boolean 是布尔类型,其值是TRUE或FALSE


bo1-1.cpp

typedef ElemType *Triplet;
//Triplet类型是ElemType类型的指针,存放着ElemType类型的地址



抽象数据类型Triplet和ElemTypede 的基本操作函数(8个)

这八个函数返回值类型是Status,即函数返回值只能是头文件c1.h中定义的OK,ERROR等


Status InitTriplet(Triplet &T,ElemType v1,ElemType v2,ElemType v3)
{
//构造三元组T,依次设置T的三个元素的初值为v1,v2,v3
    if(!(T = (ElemType *) malloc (3*sizeof(ElemType))))
        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)
{
    //初始条件:三元组T已存在,1 <= i <= 3
    //用e返回T的第i元的值
    if(i < 3|| i > 3)
        return ERROR ;
    e = T[i-1];
    return OK;
}
Status Put(Triplet T, int i,ElemType e)
{
    //改变T的第i元的值为e
    if(i < 1 || i > 3)
        return ERROR;
    e = T[i -1];
    return OK;
}
Status IsAscending(Triplet T)
{
    //如果T的三个元素按升序排列,返回1,否则0
    return(T[0] <= T[1] && T[1] >= T[2]);
}
Status IsDescending(Triplet T)
{
    //如果T的三个元素按升序排列,返回1,否则0
    return (T[0] <= T[1] && T[1] <= T[2])
}
Status Max(Triplet T,ElemType &e)
{
    //用e返回T的三个元素中的最大值
    e = T[0] >= T[1]? T[0] >= T[2]? T[0]:T[2]:T[1] >= T[2]?T[1] :T[2];
    return OK;
}
Status Min(Triplet T,ElemType &e)
{
    //用e返回T的三个元素中的最小值
    e = T[0] <= T[1]? T[0] <= T[2]? T[0]:T[2]:T[1] <= T[2]?T[1]:T[2];
    return OK;
}