#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. GitHub上整理的一些资料(转)

    技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 ...

  2. jQuery包裹节点用法完整示例

    本文实例讲述了jQuery包裹节点用法.分享给大家供大家参考,具体如下: <html> <head> <meta http-equiv="Content-Typ ...

  3. sqlserver 增加表字段

    ALTER TABLE [ImportCompanys]ADD shortName nvarchar(500)ADD ID int identity (1,1)

  4. 解决apache服务器本地可以访问,同局域网内他人不能访问的问题(转)

    问题提出:发现这个问题时,我同学让我做好的网页小案例给他看看,我是用wamp搭建的本地服务器,本地访问地址例如为: http://localhost/Dedecms/index.php 对于其他人要访 ...

  5. 保证相同类型的MDI子窗体只会被打开一次的方法

    本文转载:http://www.cnblogs.com/Ricky81317/archive/2008/09/17/1292443.html 看到论坛中有朋友问,如何可以保证在MDI主窗体中,同一类型 ...

  6. mxGraph实现按住ctrl键盘拖动图形实现复制图形功能

    实现这个功能很easy,仅仅须要重写moveCells方法就能够了.以下是源文件里的代码: mxGraph.prototype.moveCells = function(cells, dx, dy, ...

  7. [React] Linting React JSX with ESLint (in ES6)

    ESLint is a JavaScript linter (static analysis tool) that offers full support for ES6, JSX, and othe ...

  8. Android 颜色渲染(八) SweepGradient扫描/梯度渲染

    版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] Android 颜色处理(八) SweepGradient 扫描/梯度渲染 为什么什么叫扫描渲染呢?  相信大家都看过雷达扫描的 ...

  9. 使用r2d3的注意事项

    避免使用tspan 样式上display:none无效, visibility:hidden无效,只能使用fill:none或rgba(0,0,0,0) 容器不能起到绘图的层级作用,覆盖顺序由先后顺序 ...

  10. DeDeCMS 每次都被黑出翔了!!DEDECMS漏洞扫描

    在dedecms基础上用插件的形式制作了一分类信息平台.结果问题不断的接踵而至.每次上去扫描一下.各种漏洞.危急代码一堆一堆的.全然被黑出翔了. 之所以这种原因, 1)开源程序的开放性,让全部人都能够 ...