ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言数据结构-三元数组Triplet

2020-06-26 17:06:36  阅读:877  来源: 互联网

标签:Status Triplet return ElemType C语言 OK 数据结构 define


#include <stdio.h>
#include<stdlib.h>

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLF -1
#define OVERFLOW -2

typedef int Status;

typedef int ElemType;
typedef int *Triplet;

Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3){
    //操作结果:构造三元组T,元素e1,e2,e3分别赋值给v1,v2,v3
    T = (ElemType *) malloc (3 * sizeof(ElemType));//分配三个元素的存储空间
    if (!T) exit(OVERFLOW);//分配空间失败
    T[0] = v1;
    T[1] = v2;
    T[2] = v3;
    return OK;
}//InitTriplet

Status DestoryTriplet(Triplet &T) {
    free(T);
    T = NULL;
    return OK;
}

Status Get(Triplet &T, int i, ElemType &e){
    if(i <1 || i > 3) {
        return ERROR;
    }

    e = T[i - 1];
    return OK;
}

Status Put(Triplet &T, int i, ElemType e) {
     if(i <1 || i > 3) {
        return ERROR;
    }

    T[i - 1] = e;
    return OK;
}

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

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

Status Max(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 Min(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;
	ElemType e, e1, e2, e3, r;
	e1 = 3;
	e2 = 5;
	e3 = 7;

	InitTriplet(T, e1, e2, e3);

    printf("====== e1 ========\n");
    Get(T, 1, e);
    printf("%-4d\n", e);
    printf("\n");

    printf("====== e2 ========\n");
    Get(T, 2, e);
    printf("%-4d\n", e);
    printf("\n");

    printf("====== e3 ========\n");
    Get(T, 3, e);
    printf("%-4d\n", e);
    printf("\n");

    e = 6;
    printf("====== put 6 e3 ========\n");
    Put(T, 3, e);
    printf("%-4d\n", e);
    printf("\n");

    printf("====== r = 1 ========\n");
    r = IsAscending(T);
    printf("%-4d\n", r);
    printf("\n");

    printf("====== r = 0 ========\n");
    r = IsDescending(T);
    printf("%-4d\n", r);
    printf("\n");

    printf("======  Max ========\n");
    Max(T, e);
    printf("%-4d\n", e);
    printf("\n");

    printf("======  Min ========\n");
    Min(T, e);
    printf("%-4d\n", e);
    printf("\n");

    DestoryTriplet(T);

    printf("====== T is null ? ========\n");
    if(T == NULL) {
        printf("t is null\n");
    } else {
        printf("t is not null\n");
    }

	return 0;
}

  

标签:Status,Triplet,return,ElemType,C语言,OK,数据结构,define
来源: https://www.cnblogs.com/maduar/p/13195493.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有