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