// Triplet.cpp : 定义控制台应用程序的入口点。
//
#include "stdio.h"
#include "stdlib.h"
#define OK 1
#define ERROE 0

typedef int Status;

typedef int *Triplet;//定义Triplet为指针类型;

void main()
{

//构造三元组
Status InitTriplet(Triplet *T, int v1, int v2, int v3);

//销毁三元组
Status DestroyTriplet(Triplet *T);

//返回三元组的第i个元素并保存在变量e中
Status Get(Triplet T, int i, int *e);

//将三元组下标为为i的值替换为e
Status Put(Triplet *T, int i, int e);

//判断三元组是否是升序排列
Status IsAcending(Triplet T);

//判断三元组是否是降序排列
Status IsDcending(Triplet T);

//找出三元组中的最大值并保存在e中
Status Max(Triplet T, int *e);
//找出三元组中的最小值并保存在e中
Status Min(Triplet T, int *e);

Triplet T;
int a = 1, b = 2, c = 3, e=0, max, min;
//初始化三元组
InitTriplet(&T, a, b, c);

Get(T, 1, &e);

Put(&T, 1, 5);

Max(T, &max);

Min(T, &min);

printf("当前元素的值为%d\n",e);

printf("当前三元组中的最大值为%d\n", max);

printf("当前三元组中的最小值为%d\n", min);

}

//初始化三元组
Status InitTriplet(Triplet *T, int v1, int v2, int v3) {

*T = (int *)malloc(sizeof(int) * 3);

if (*T == NULL) {
exit(0);
}

*(*T) = v1;
*(*T+1) = v2;
*(*T+2) = v3;

return OK;

}
//销毁三元组
Status Destroy(Triplet *T) {

free(T);
return OK;
}

//根据下标获取三元组下标的值
Status Get(Triplet T, int i, int *e) {
if (i < 1 || i>3) {

return ERROE;

}
*e = *(T+i);

return *e;
}
//向三元组添加元素
Status Put(Triplet *T, int i, int e) {
if (i < 1 || i>3) {
return ERROE;
}
*(*T+i - 1) = e;
return OK;

}

//判断三元组是否是升序排列
Status IsAcending(Triplet T) {
if (*(T+0) < *(T+1) && *(T+1) < *(T+2)) {
return OK;
}
return ERROE;
}

//判断三元组是否是降序排列
Status IsDcending(Triplet T) {
if (*(T+0) > *(T+1) && *(T+1) > *(T+2)) {
return OK;
}
return ERROE;
}

//获取三元组中的最大值
Status Max(Triplet T, int *max) {

*max = *(T+0);
for (int i = 1; i <3; i++)
{
if (*max < *(T+i)) {
*max = *(T+i);
}
}
return OK;

}

//获取三元组中的最小值
Status Min(Triplet T, int *min) {
*min = *(T+0);
for (int i = 0; i <3; i++)
{
if (*min > *(T+i)) {
*min = *(T+i);
}

}

return OK;

}

c语言三元组的更多相关文章

  1. 三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述)

    三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述) 用经典矩阵转置算法和普通的三元组矩阵转置在时间复杂度上都是不乐观的.快速转置算法在增加适当存储空间后实现快速转置具体原理见代码注释部 ...

  2. 三元组ADT (数据结构C语言版) C++实现

    很久没用C语言,都忘了C语言中没有引用参数,下面的代码中用到了C语言没有的引用参数. 首先是一些表示状态的全局变量 common.h #define TRUE 1 #define FALSE 0 #d ...

  3. 稀疏矩阵三元组表快速转置(C语言实现)

    本来准备昨天下午写的,但是因为去参加360众测靶场的考核耽搁了,靶场的题目还是挺基础的. 继续学习吧. 使用黑色墨水在白纸上签名就像由像素点构成的稀疏矩阵.如图4所示. 图4 手写体签名 [问题]请将 ...

  4. 三元组顺序结构实现稀疏矩阵相加,行序优先(Java语言描述)

    不用十字链表也可以稀疏矩阵相加时间复杂度最坏情况达到O(tuA + tuB);思路比较简单就不赘述了,代码如下: 三元组: package 行逻辑链接的顺序表实现稀疏矩阵的相乘; public cla ...

  5. lecture4-神经网络在语言上的应用

    Hinton第四课 这一课主要介绍神经网络在语言处理上应用,而主要是在文本上,并附上了2003年Bengio 等人的19页的论文<A Neural Probabilistic Language ...

  6. C语言 稀疏矩阵 压缩 实现

    稀疏矩阵压缩存储的C语言实现 (GCC编译). /** * @brief C语言 稀疏矩阵 压缩 实现 * @author wid * @date 2013-11-04 * * @note 若代码存在 ...

  7. 使用Jena RDF API 开发脚本语言管理资源描述框架模型

    摘要 资源描述框架(Resource Description Framework RDF)是一种以XML格式描述元数据的标准格式.Jena是一种用于将关系数据库或是文本文件中所表示的数据建立为元数据模 ...

  8. Drools文档(八) 规则语言参考

    规则语言参考 概述 Drools有一个"本地"的规则语言.这种格式在标点符号上非常轻,并且通过"扩展器"支持自然语言和领域特定的语言,使语言能够变形到您的问题领 ...

  9. R语言︱SNA-社会关系网络—igraph包(社群划分、画图)(三)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 社群划分跟聚类差不多,参照<R语言与网站 ...

随机推荐

  1. IntelliJ全家桶修改terminal字体的方法

    IntelliJ IDEA 设置Terminal 窗口字体大小 我在Setting中查看了所有和Terminal字样有关的设置,都没有找到设置字体大小的方法,原来Terminal也只需要设置Conso ...

  2. java读取properties文件,并在配置文件中设置默认浏览器驱动

    java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properti ...

  3. 怎么windows10下设置始终以管理员身份运行

    怎么windows10下设置始终以管理员身份运行 学习了:https://jingyan.baidu.com/article/e2284b2b6e6df8e2e7118d7a.html 可以对快捷方式 ...

  4. Win7如何配置java环境变量,运行环境

    直接运行eclipse,弹出错误提示.   1 确保你安装了JDK,安装之后文件夹示例如下(jdk1.x.x取决于你安装的JDK版本)   2 系统,高级系统设置,高级,环境变量新建一个JAVA_HO ...

  5. C++ 利用文件流复制文件

    bool CopyFile(const std::string &src, const std::string &dest) { std::ifstream fin(src.c_str ...

  6. python的偏函数(partial)

    偏函数就是固定原函数的某个参数,比如newadd就是固定了add方法的第一个参数,让a=3,这样对newadd方法只要传入参数B就可以实现add方法了,刚看偏函数的写法可能会不适应,因为partial ...

  7. CDN原理实现详情

    CDN真是个好东西,但是究竟是怎么实现的呢, 学习下吧 首先浏览器发起请求 Dns解析寻找服务器资源 使用CDN加速的内容会被放到不同的服务器上 根据用户的请求来判断 -- 算了表达不清楚,看图吧! ...

  8. 解决eclipse中overlaps the location of another project: 'xxxx'

    找遍网络发现各种解释,最常见的一种是: new -> android project -> create project from exist source出现如下错误信息:Invalid ...

  9. is_callable — 检测参数是否为合法的可调用结构

    说明 bool is_callable ( callable $name [, bool $syntax_only = false [, string &$callable_name ]] ) ...

  10. 《STL源代码剖析》学习笔记系列之七、八——仿函数和配接器

    1. 仿函数 仿函数又名函数对象.具有函数性质的对象.就是传入一些參数.然后对參数进行某些运算,然后返回一个值. 为了可以使行为类似函数,须要在类别定义中必须自己定义function call 运算子 ...