//文件名:Triplet.c

//因为C语言没有引用,所以用指针代替引用

//函数的头文件

#include

#include

//函数结果状态码

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

//Status是函数的类型,其值是函数结果的状态码

typedef int Status;

//定义数据类型

typedef int ElemType;

typedef ElemType *Triplet;

//----------基本操作的函数原型说明----------

Status InitTriplet( Triplet *pT, ElemType v1, ElemType v2, ElemType v3);

//操作结果:构造了三元组T,元素e1,e2,e3分别被赋予参数v1,v2,v3的值

Status DestroyTriplet(Triplet *pT);

//操作结果:三元组T被销毁

ElemType Get(Triplet T,int i,ElemType e);

//初始条件:三元组T已经存在,1<=i<=3

//操作结果: 用e返回T的第i个元素的值

Status Put(Triplet T,int i,ElemType e);

//初始条件:三元组T已经存在,1<=i<=3

//操作结果:改变T的第i个元素为e

Status IsAscending(Triplet T);

//初始条件:三元组T已经存在

//操作结果:如果T的三个元素按升序排列,则返回1,否则返回0

Status IsDescending(Triplet T);

//初始条件:三元组T已经存在

//操作结果:如果T的三个元素按降序排列,则返回1,否则返回0

ElemType Max(Triplet T,ElemType e);

//初始条件:三元组T已经存在

//操作结果:用e返回三个元素中的最大值

ElemType Min(Triplet T,ElemType e);

//初始条件:三元组T已经存在

//操作结果:用e返回三个元素中的最小值

//----------基本操作的实现-----------------

Status InitTriplet( Triplet *pT, ElemType v1, ElemType v2, ElemType v3)

{

//构造三元组T,依次置T的三个元素初值为v1, v2, v3

*pT=(Triplet)malloc(3 * sizeof(ElemType));//分配三个元素的存储空间

if(!(*pT)) exit(OVERFLOW) ;//分配存储空间失败

(*pT)[0]=v1;

(*pT)[1]=v2;

(*pT)[2]=v3;

return OK;

}//InitTriplet

Status DestroyTriplet(Triplet *pT)

{

//销毁三元组

free(*pT);

*pT=NULL;

return OK;

}//DedtroyTriplet

ElemType Get(Triplet T,int i,ElemType e)

{

//1<=i<=3,用e返回T的第i个元素值

if(i<1 || i>3) return ERROR;

e=T[i-1];

return e;

}//Get

Status Put(Triplet T,int i,ElemType e)

{

//1<=i<=3,置T的第i个元素的值为e

if(i<1 || i>3) return ERROR;

T[i-1]=e;

return OK;

}//Put

Status IsAscending(Triplet T)

{

//如果T的3个元素按升序排列,则返回1,否则返回0

return(T[0]<=T[1] && T[1]<=T[2]);

}//IsAscending

Status IsDescending(Triplet T)

{

//如果T的3个元素按降序排列,则返回1,否则返回0

return(T[0]>=T[1] && T[1]>=T[2]);

}//IsDescending

ElemType 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 e;

}//Max

ElemType 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 e;

}//Max

//-----------------------测试主程序--------------------

//为测试,新增一个显示函数

Status Show(Triplet T)

{

int i;

ElemType e;

if(!T)//如果T已经销毁

{

printf("T 已经销毁。");

}

else

{

for(i=1;i<=3;i++)

printf("T的第%d个元素值为:%d/n",i,Get(T,i,e));

}

}

int main()

{

Triplet T;

int i;

ElemType v1,v2,v3;

ElemType e;

//测试三元组的初始化函数 InitTriplet

printf("请输入三个整数,作为三元组的三个元素:/n");

scanf("%d%d%d",&v1,&v2,&v3);

InitTriplet(&T,v1,v2,v3);

//测试Get

Show(T);

//测试Put

printf("修改三元组的第二个元素的值:/n");

scanf("%d",&v2);

Put(T,2,v2);

Show(T);

//测试 IsAscending

if(IsAscending(T))

printf("T 是升序序列/n");

else

printf("T 不是升序序列/n");

//测试 IsDescending

if(IsDescending(T))

printf("T 是降序序列/n");

else

printf("T 不是降序序列/n");

//测试Max

e=Max(T,e);

printf("三元组中最大的元素是%d/n",e);

//测试Min

e=Min(T,e);

printf("三元组中最小的元素是%d/n",e);

//测试 DestroyTriplet

DestroyTriplet(&T);

Show(T);

return 0;

}

c语言写报告抽象数据类型,数据结构(C语言版)第一章 抽象数据类型的表示与实现...相关推荐

  1. 数据结构(C语言)第二版 第一章课后答案

    数据结构(C语言)第二版 第一章课后答案 这本书,我以后也会用,所以趁着考完试做个整理,顺便分享出来.电子资源发不出来,放评论区吧,有需要自取. 1. 简述下列概念:数据.数据元素.数据项.数据对象. ...

  2. c语言上机报告之水仙花数,C语言上机报告之水仙花数..doc

    C语言上机报告之水仙花数. C语言程序设计 上机报告 课题名称:水仙花数的算法 院 (系):工程学院 专业班 级: 052126 学生姓名: 喻培 学 号: 20121004040 指导教师: 熊慕舟 ...

  3. 《数据结构》 李春葆 第一章-绪论

    <数据结构> 李春葆 第一章-绪论 1 什么是数据结构 1.1 数据结构的定义 1.2 逻辑结构 1.2.1 逻辑结构的表示 1 什么是数据结构 数据元素以及数据元素之间的关系,数据元素= ...

  4. c语言写报告抽象数据类型,C语言抽象数据类型ADT

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

  5. 为什么C语言是非形式化的,《数据结构C语言版》——绪论

    <数据结构C语言版>--绪论<笔记> 一.基本概念和术语 1.数据,数据元素, 数据项,数据对象 数据:是客观事物的符号表示,是所有能够输入到计算机中并被计算机程序处理的符号的 ...

  6. 数据结构c语言版第一章答案,《c语言数据结构》第一章概论自测题答案

    <<c语言数据结构>第一章概论自测题答案>由会员分享,可在线阅读,更多相关<<c语言数据结构>第一章概论自测题答案(4页珍藏版)>请在人人文库网上搜索. ...

  7. 大一c语言实验报告运行结果,大一c语言实验报告

    篇一:大一上期C语言实验报告3 基本输入输出 成都工业学院·计算机工程学院 <程序设计基础>实验报告 1. 实验目的 (1) 熟练掌握scanf()/printf()库函数的调用格式,正确 ...

  8. C语言前驱和后继字母,数据结构(c语言)3.ppt

    1 第2章 线性表 2.1 线性表的定义及其基本操作 2.2 线性表的顺序存储 2.3 线性表的链式存储 2.4 线性表的存储方式小结 仔佳痴腔慎析沙析增孙丸斌明躬烟议怠鸭顷扣战突邑菩置慰训即檬氨酵涟 ...

  9. python是c语言写的吗-先学C语言还是Python?资深程序员往往是这样建议的!

    编程是一门手艺, 学习编程首先要有目的,w3cschool先带大家了解一下自己需要学习什么吧! 0.学一门语言 其实学什么语言都可以,因为语言都是互通的,C语言也好, 对于初学者来说,Python 也 ...

  10. c语言线性表库函数大全,数据结构(C语言版)-线性表习题详解

    <数据结构(C语言版)-线性表习题详解>由会员分享,可在线阅读,更多相关<数据结构(C语言版)-线性表习题详解(23页珍藏版)>请在人人文库网上搜索. 1.数 据 结 构 ,线 ...

最新文章

  1. gazebo入门_【ROS-Gazebo】仿真插件编写教程(1)——概述
  2. oralce 11g rac ocr和votedisk迁移
  3. 用window.showModalDialog()实现DIV模式弹出窗口
  4. 文件服务器版压缩工具,FileOptimizer文件压缩工具
  5. 基于JAVA+SpringBoot+Mybatis+MYSQL的应急值班值守管理系统
  6. 88个word基本使用技巧大全,提升工作效率
  7. android俄罗斯方块报告,Android 俄罗斯方块
  8. win7安装ruby on rails开发环境
  9. QT5 QDateTime函数及时间格式说明
  10. 易中天品汉代风云人物02: 冤死的晁错(下)
  11. html 引入 BootCDN 上的库
  12. 五个角度浅析大数据与BI的区别
  13. consists of 和 is comprised of
  14. js 实现在线考试切屏代码
  15. Appium: Windows系统桌面应用自动化测试(一)
  16. 推荐系统入门(四):WideDeep(附代码)
  17. Sweet32: TLS 64位分组密码生日攻击(CVE-2016-2183)
  18. JAVA JDBC连接步骤代码,SQL注入,处理异常try catch 的快捷键
  19. lightroom使用小结六 调整作品全局色彩
  20. PAC—主成分分析方法

热门文章

  1. javascript的prototype继承问题
  2. 倒数58天 -- 分治法 -- 使用循环求方程的一个解
  3. html语言中base,HTML base 标签
  4. mysql压缩包安装教程8.0.19,win10安装zip版MySQL8.0.19的教程详解
  5. 向日葵linux 用电脑远程控制与管理,远程控制软件向日葵和teamviewer的区别和使用...
  6. kcf算法中cos_window是什么意思_知网/维普查重系统算法介绍(史上最详细)
  7. 微课|Python三种方法统计各分数段内的人数(17分钟)
  8. 调用GPU进行神经网络的训练 GPU环境的搭建
  9. matlab和c 性能,性能权衡 – 什么时候是MATLAB更好/慢于C/C++
  10. JAVA标准输出错误输出,从tsls输出中提取标准错误