算法-第一章-Triplet实现

前几天面试发现基础忘得差不多啦,拿起数据结构的老书又啃了一下,打算将书上所有的例子都写一遍,不多说啦,直接上代码;

#include
#include


#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1 //不可实现的
#define OVERFLOW -2


typedef int Status;


typedef int ElemType;


typedef ElemType* Triplet;


//基本操作的函数原型展示
Status initTriplet(Triplet &T, ElemType a, ElemType b, ElemType c);
Status destoryTriplet(Triplet &T);
Status getByIndex(Triplet T,int index,ElemType &e);
Status putByIndex(Triplet &T,int index,ElemType e);
Status isAscending(Triplet T);
Status isDescending(Triplet T);
Status getMax(Triplet T,ElemType &e);
Status getMin(Triplet T,ElemType &e);


//基本操作的实现
Status initTriplet(Triplet &T, ElemType a, ElemType b, ElemType c){
    T=(ElemType *)malloc(3*sizeof(ElemType));
    if(!T)
        exit(INFEASIBLE);
    T[0]=a;
    T[1]=b;
    T[2]=c;
    return OK;
}
Status destoryTriplet(Triplet &T){
    free(T);
    T=NULL;
    return OK;
}


Status getByIndex(Triplet T,int index,ElemType &e){
    if(index<1 || index>3)
        return ERROR;
    e=T[index-1];
    return OK;
}


Status putByIndex(Triplet &T,int index,ElemType e){
    if(index<1 || index>3)
        return ERROR;
    T[index-1]=e;
    return OK;
}


Status isAscending(Triplet T){
    return T[0]<=T[1] && T[1]<=T[2];
}


Status isDescending(Triplet T){
    return T[1]>=T[1] && T[1]>=T[2];
}


Status getMax(Triplet T,ElemType &e){
    e=T[0]>=T[1]?(T[0]>=T[2]?T[0]:T[2]):(T[1]>=T[2]?T[1]:T[2]);
    return OK;
}


Status getMin(Triplet T,ElemType &e){
    e=T[0]<=T[1]?(T[0]<=T[2]?T[0]:T[2]):(T[1]<=T[2]?T[1]:T[2]);
    return OK;
}


int main(){
    Triplet t;
    initTriplet(t,1,2,3);
    printf("isDescending:%d",isDescending(t));
    destoryTriplet(t);
    printf("--ok--");
}

你可能感兴趣的:(数据结构)