#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. The Fortified Forest - POJ 1873(状态枚举+求凸包周长)

    题目大意:有个国王他有一片森林,现在他想从这个森林里面砍伐一些树木做成篱笆把剩下的树木围起来,已知每个树都有不同的价值还有高度,求出来砍掉那些树可以做成篱笆把剩余的树都围起来,要使砍伐的树木的价值最小 ...

  2. Codeforces Round #100(140~~)

    140 A. New Year Table 题目大意:有一个大圆桌子,半径是R, 然后有n个半径是r的盘子,现在需要把这些盘子摆放在桌子上,并且只能摆放在桌子边缘,但是不能超出桌子的范围....问能放 ...

  3. nyoj 102 次方求模【快速幂】

    次方求模 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 求a的b次方对c取余的值   输入 第一行输入一个整数n表示测试数据的组数(n<100)每组测试只有一 ...

  4. 【Android - V】之DrawerLayout的使用

    DrawerLayout是Android V4包中的一个布局控件,用来实现一个抽屉样式的布局. DrawerLayout通过设置子视图的layout_gravity来决定子视图停靠在屏幕的哪个边缘外侧 ...

  5. volley使用与解析(一)

    1.什么是volley Volley是google发布的基于Android平台上的网络通信库,能使网络通信更快,更简单,更健壮.获取地址:git clone https://android.googl ...

  6. [转]Animation 动画详解(一)——alpha、scale、translate、rotate、set的xml属性及用法

    转载:http://blog.csdn.net/harvic880925/article/details/39996643 前言:这几天做客户回访,感触很大,用户只要是留反馈信息,总是一种恨铁不成钢的 ...

  7. wdlinux mysql innodb的安装

    mysql innodb的安装 wget -c http://down.wdlinux.cn/in/mysql_innodb_ins.sh chmod 755 mysql_innodb_ins.sh ...

  8. 如何更改应用在app store的名称

    如何修改应用在app store 的名称,我修改了plist里面的bundle display name,现在安装后在设备上会显示修改后的名称,可是app store里面还是原来的名称. 何把app ...

  9. Teamcity+SVN+VisualStudio在持续集成简明教程

    Teamcity+SVN+VisualStudio持续集成 简明教程 一.写在最前: 1.      各组件版本号例如以下: Teamcity(简称tc)版本号:8.1.4 SVN版本号:Tortoi ...

  10. leetcode-1 Two Sum 找到数组中两数字和为指定和

     问题描写叙述:在一个数组(无序)中高速找出两个数字,使得两个数字之和等于一个给定的值.如果数组中肯定存在至少一组满足要求. <剑指Offer>P214(有序数组) <编程之美& ...