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;
}原文:http://chenzhen1213.blog.51cto.com/8632175/1392785