データ構造は厳蔚敏清華大学出版社の第一章抽象データタイプの三元組の実現に成功してコンパイルして実行します.

4504 ワード

教科書の計算方法は実現します!
/* main.cpp       Functions.cpp     */
#include"MacroDef.h"  /*        #include                 */
/*   2          (       ),         Functions.cpp */
#include"ElemType.h" /*          ElemType    */
/*       Triplet ElemType     (8 ) */
int main()
{
    Triplet T;//       
    ElemType m;
    Status i;
    i=InitTriplet(&T,5,7,9);
    /* i=InitTriplet(&T,5.0,7.1,9.3); /*  ElemType      ,      */
    /*     ,       i ,      printf         ! */

    printf("        ,i=%d(1:  ) T     :%d %d %d
",i,T[0],T[1],T[2]); /* ElemType , printf() 。 */ /* */ i=Get(T,2,&m); if(i==OK) printf("T 2 :%d
",m); i=Put(T,2,6); if(i==OK) printf(" T 2 6 ,T :%d %d %d
",T[0],T[1],T[2]); i=IsAscending(T); /* ElemType , ElemType , */ printf(" ,i=%d(0: 1: )
",i); i=IsDescending(T); printf(" ,i=%d(0: 1: )
",i); if((i=Max(T,&m))==OK) /* */ printf("T :%d
",m); if((i=Min(T,&m))==OK) printf("T :%d
",m); DestroyTriplet(&T); /* */ printf(" T ,T=%u(NULL)
",T); }
//
// Created by Cooper on 21/10/2016.
//
/* ElementType.h   ElementType       */
#ifndef CH1_ELEMTYPE_H
#define CH1_ELEMTYPE_H
/*               */
typedef ElemType *Triplet; /*  InitTriplet           */
/* Triplet   ElemType     ,  ElemType      */
Status InitTriplet(Triplet *T,ElemType v1,ElemType v2,ElemType v3);//      
Status DestroyTriplet(Triplet *T);//  
Status Get(Triplet T,int i, ElemType *e);//
Status Put(Triplet T,int i,ElemType e);
Status IsAscending(Triplet T);
Status IsDescending(Triplet T);
Status Max(Triplet T,ElemType *e);
Status Min(Triplet T,ElemType *e);

#endif //CH1_ELEMTYPE_H
//
// Created by Cooper on 21/10/2016.
//
/* MacroDef.h     */
#ifndef CH1_MACRODEF_H
#define CH1_MACRODEF_H

#include
#include
#include /* malloc()  */
#include /* INT_MAX  */
#include /* EOF(=^Z F6),NULL */
#include /* atoi() */
#include /* eof() */
#include /* floor(),ceil(),abs() */
#include /* exit() */
/*          */
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
typedef int ElemType; /*         ElemType         */

typedef int Status;/*               */

/*typedef double ElemType; /*         ElemType           */
#define OVERFLOW -2
/* #define OVERFLOW -2    math.h    OVERFLOW   3,      */
typedef int Status; /* Status      ,           , OK  */
typedef int Boolean; /* Boolean     ,   TRUE FALSE */

#endif //CH1_MACRODEF_H
//
// Created by Cooper on 21/10/2016.
//
/* Functions.cpp       */
#include"MacroDef.h"  /*        #include                 */
/*   2          (       ),         Functions.cpp */
#include"ElemType.h" /*          ElemType    */
/*       Triplet ElemType     (8 ) */
 Status InitTriplet(Triplet *T,ElemType v1,ElemType v2,ElemType v3)
 { /*     :     T,   T         v1,v2 v3 */
   *T=(ElemType *)malloc(3*sizeof(ElemType));
   if(!*T)
     exit(OVERFLOW);
   (*T)[0]=v1,(*T)[1]=v2,(*T)[2]=v3;
   return OK;
 }

 Status DestroyTriplet(Triplet *T)
 { /*     :   T    */
   free(*T);//  T     
   *T=NULL;//       
   return OK;
 }

 Status Get(Triplet T, int i, ElemType *e)
 { /*     :   T   ,1≤i≤3。    : e  T  i    */
   if(i<1||i>3)
     return ERROR;
   *e=T[i-1];
   return OK;
 }

 Status Put(Triplet T,int i,ElemType e)
 { /*     :   T   ,1≤i≤3。    :  T  i    e */
   if(i<1||i>3)
     return ERROR;
   T[i-1]=e;
   return OK;
 }

 Status IsAscending(Triplet T)
 { /*     :   T   。    :  T          ,  1,    0 */
   return(T[0]<=T[1]&&T[1]<=T[2]);
 }

 Status IsDescending(Triplet T)
 { /*     :   T   。    :  T          ,  1,    0 */
   return(T[0]>=T[1]&&T[1]>=T[2]);
 }

 Status Max(Triplet T,ElemType *e)
 { /*     :   T   。    : 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)
 { /*     :   T   。    : 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;
 }