#include <stdio.h>
#include <stdlib.h> #define ERROR 0
#define OK 1 typedef int Status;
typedef int Elemtype;
typedef Elemtype * Triplet; Status InitTriplet(Triplet *t, Elemtype v0, Elemtype v1, Elemtype v2){ //三元组t的初始化 *t = (Elemtype *)malloc( * sizeof(Elemtype));
if (!*t)
exit(-); (*t)[] = v0;
(*t)[] = v1;
(*t)[] = v2; return OK;
} Status DestroyTriplet(Triplet *t){//三元组t的释放 int* t=t free(*t);
*t = NULL;
return OK;
} Status Get(Triplet t, int i, Elemtype *e){//得到三元组t中的某个元素
if (i< || i> || t == NULL)
return ERROR;
*e = t[i - ];
//printf("三元组中第%d个元素为%d\n",(i+1),t[i]);
return OK;
} Status Put(Triplet t, int i, Elemtype e){
if (t == NULL)
return ERROR;
if (i< || i> || t == NULL)
return ERROR;
t[i] = e;
return OK;
} Status Show(Triplet t){
if (t == NULL)
return ERROR;
for (int i = ; i < ; i++)
printf("第%d个元素为%d\n", i + , t[i]);
return OK;
} Status isAscending(Triplet t){
if (t == NULL)
return ERROR;
return(t[] <= t[] && t[] <= t[]);
} Status isDescending(Triplet t){
if (t == NULL)
return ERROR;
return(t[] >= t[] && t[] >= t[]);
} Status Max(Triplet t, Elemtype *e){
if (t == NULL)
return ERROR;
*e = ((t[] > t[] ? t[] : t[])>t[]) ? (t[] > t[] ? t[] : t[]) : t[];
return OK;
} Status Min(Triplet t, Elemtype *e){
if (t == NULL)
{
printf("t为空\n");
return ERROR;
}
*e = ((t[] < t[] ? t[] : t[])<t[]) ? (t[] < t[] ? t[] : t[]) : t[];
return OK;
} void main(){
Status i;//程序状态
Elemtype p;//用于主函数和子函数的内存共享
Elemtype max;
Elemtype min;
Triplet t;
int di = ;
i = InitTriplet(&t, , , );
if (i){
i = Get(t, di, &p);
}
printf("三元组中第%d个元素为%d\n", di, p);
if (i){
i = Put(t, di, );
}
if (i){
i = Show(t);
} if (isAscending(t))
printf("三元组中的元素是按升序排列\n");
else
printf("三元组中的元素不是按升序排列\n"); if (isDescending(t))
printf("三元组中的元素是按降序排列\n");
else
printf("三元组中的元素不是按降序排列\n"); if (i){
i = Max(t, &max);
}
printf("三元组中元素最大的元素为%d\n", max); if (i){
DestroyTriplet(&t);
} if (i){
i = Min(t, &min);
} printf("三元组中元素最小的元素为%d\n", min);//t所指向的内存空间已被释放,min中存放着未初始化的垃圾数字
}

抽象数据类型Triplet的C语言实现的更多相关文章

  1. C语言泛型编程--抽象数据类型

    一.数据类型: 在任何编程语言中,数据类型作为一个整体,ANSI-C包含的类型为:int.double.char……,程序员很少满意语言本身提供的数据类型,一个简单的办法就是构造类似:array.st ...

  2. 采用C/C++语言如何实现复数抽象数据类型Complex

    记录一下! 采用C/C++语言如何实现复数抽象数据类型Complex #include <stdio.h> typedef struct Complex { double e1; // 实 ...

  3. C语言抽象数据类型ADT

    根据编程的问题匹配合适的数据类型.数据项连接构成了链表,定义了一个结构代表单独的项.设计了一些方法把一系列结构构成一个链表.本质上,我们使用C语言的功能设计了一种符合程序要求的新的数据类型.但是上述的 ...

  4. 数据结构 集合_集合(数学)抽象数据类型的C语言实现

    链表是实现集合的一种理想的方式.将List以typedef的方式重命名为Set.这样做能保留链表简洁的特性,还能使集合具有了一些多态的特性. 使用这种方法的最大好处就是可以使用list_next来遍历 ...

  5. 集合抽象数据类型的C语言实现

    链表是实现集合的一种理想的方式.将List以typedef的方式重命名为Set.这样做能保留链表简洁的特性,还能使集合具有了一些多态的特性. 使用这种方法的最大好处就是可以使用list_next来遍历 ...

  6. ORACLE抽象数据类型

    ORACLE抽象数据类型 *抽象数据类型*/1,抽象数据类型 概念包含一个或多个子类型的数据类型不局限于ORACLE的标准数据类型可以用于其他数据类型中 2,创建抽象数据类型 的语法(必须用NOT F ...

  7. 【Python&数据结构】 抽象数据类型 Python类机制和异常

    这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Pyt ...

  8. DS博客作业01--日期抽象数据类型设计与实现

    1.思维导图及学习体会 1.1第一章绪论知识点思维导图 1.2 学习体会 这次博客园和大作业是我在编程学习中的有意义的进步,第一次尝试使用vs,并且通过同学的一些网站的推荐,和热心同学的帮忙,简单学会 ...

  9. 抽象数据类型(ADT)

    抽象数据类型(Abstract Data Type,ADT)是指一个数学模型以及定义在这个模型上的一组操作.抽象数据类型的定义仅仅取决于它的一组逻辑特性,而与它在计算机中的表示和实现无关. 例如,in ...

随机推荐

  1. Git服务器仓库的搭建和客户端使用方法

    环境说明: 1.fedora21  桌面系统  2.已经配置好yum仓库 一.安装git # yum install git 1.1 创建git用户 创建git账户并登录,直接指定用户目录到/home ...

  2. javascript数组基本方法

    一.数组方法 1)concat 该方法用于连接两个或多个数组,返回连接成的新数组的副本,不会改变现有数组 [1,2,3].concat(5,6);//返回[1,2,3,5,6] 2)join 用于把数 ...

  3. 【设计模式 - 16】之迭代器模式(Iterator)

    1      模式简介 迭代器模式是JAVA中非常常用的模式,List.Map.Set等常见集合中都封装了迭代器Iterator. 迭代器模式的介绍: 迭代器模式用于顺序访问集合对象中的元素,而不需要 ...

  4. CBO学习----03--选择率(Selectivity)

    第3章 单表选择率(Single Table Selectivity) Selectivity是优化器估算Rows(Cards)的重要依据. /**************************** ...

  5. Merge into的使用具体解释-你Merge了没有

    Merge是一个很实用的功能,相似于Mysql里的insert into on duplicate key. Oracle在9i引入了merge命令,  通过这个merge你可以在一个SQL语句中对一 ...

  6. mysql 存储过程项目小结

    1. false :0  true 1 切记 官方文档:http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html BOOL,  ...

  7. Java 8 被动迭代式特性介绍(转自IBM)

    编程语言一般都需要提供一种机制用来遍历软件对象的集合,现代的编程语言支持更为复杂的数据结构,如列表.集合.映射和数组.遍历能力是通过公共方法提供,而内部细节都隐藏在类的私有部分,所以程序员不需要了解其 ...

  8. 10.5 noip模拟试题

    2bc*cosA=b^2+c^2-a^2 数学题QAQ 开始π精度不够40分 怪我喽~ #include<iostream> #include<cstdio> #include ...

  9. 实用脚本 - - insertAfter 在现有元素后插入一个新元素

    function insertAfter(newElement,targetElement){ var parent = targetElement.parentNode; if(parent.las ...

  10. wampserver 2.4 配置虚拟主机

    最近用到了wamp环境,想创建一个虚拟主机,可是忘记了,于是百度了一下,把它写下来: 环境wampserver 2.4 找到安装目录,进入apache安装目录:找到conf 下的 httpd.conf ...