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; }