嚴版實現01

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章