三元组ADT (数据结构C语言版) C++实现
很久没用C语言,都忘了C语言中没有引用参数,下面的代码中用到了C语言没有的引用参数。
首先是一些表示状态的全局变量
common.h
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERLOW -2
typedef int Status;
然后是三元组ADT的头文件,包含了三元组的函数声明
triplet.h
#include "common.h" //--------采用动态分配的顺序存储结构-----
typedef int ElemType;
typedef ElemType* Triplet; //由InitTriplet分配3个元素的存储空间 //--------基本操作的函数原型说明------
Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3);
//操作结果:构造三元组T,元素e1,e2,e3分别被赋以参数v1,v2,v3的值 Status DestroyTriplet(Triplet &T);
//操作结果:三元组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的三个元素按升序排列,则返回1,否则返回0 Status IsDescending(Triplet T);
//初始条件:三元组T已存在
//操作结果:如果T的三个元素按降序排列,则返回1,否则返回0 Status Max(Triplet T, ElemType &e);
//初始条件:三元组T已存在
//操作结果:用e返回T的三个元素中的最大值 Status Min(Triplet T, ElemType &e);
//初始条件:三元组T已存在
//操作结果:用e返回T的三个元素中的最小值
最后是triplet函数的定义以及main函数
source.cpp
#include<stdio.h>
#include<stdlib.h>
#include "triplet.h" //------------基本操作的实现------------
Status InitTriplet(Triplet &T, ElemType v1, ElemType v2, ElemType v3){
//构造三元组T,依次置T的3个元素的初始值为v1,v2,v3
T = (ElemType *)malloc( * sizeof(ElemType)); //分配3个元素的存储空间
if (!T){
exit(OVERLOW); //分配存储空间失败
}
T[] = v1; T[] = v2; T[] = v3;
return OK;
} //InitTriplet Status DestroyTriplet(Triplet &T){
//销毁三元组T
free(T); T = NULL;
return OK;
}//DestroyTriplet ElemType Get(Triplet T, int i, ElemType &e){
//1<=i<=3, 用e返回T的第i元的值
if (i< || i>) return ERROR;
e = T[i - ];
return OK;
}//Get Status Put(Triplet &T, int i, ElemType e){
//1<=i<=3, 用e赋值给T[i]
if (i< || i>) return ERROR;
T[i - ] = e;
return OK;
}//Put Status IsAscending(Triplet T){
//如果T的三个元素按照升序排列,则返回1,否则返回0
return (T[] <= T[]) && (T[] <= T[]);
}//IsAscending Status IsDecending(Triplet T){
//如果T的三个元素按照降序排列,则返回1,否则返回0
return (T[] >= T[]) && (T[] >= T[]);
}//IsDescending Status Max(Triplet T, ElemType &e){
//用e返回T的三个元素中的最大值
e = (T[] >= T[]) ? ((T[] >= T[]) ? T[] : T[]) :
((T[] >= T[]) ? T[] : T[]);
return OK;
} Status Min(Triplet T, ElemType &e){
//用e返回T的三个元素中的最小值
e = (T[] <= T[]) ? ((T[] <= T[]) ? T[] : T[]) :
((T[] <= T[]) ? T[] : T[]);
return OK;
} int main(){
Triplet T;
Status state = InitTriplet(T, , , );
printf("state: %d\n", state); ElemType e;
Get(T, , e);
printf("T[i]=%d\n", e); ElemType t1, t2, t3;
printf("sizeof T:%d\n", sizeof(T));
Get(T, , t1);
Get(T, , t2);
Get(T, , t3);
printf("t1=%d;t2=%d;t3=%d\n", t1, t2, t3); Put(T, , );
printf("T[1]=%d\n", T[]);
ElemType max, min;
Max(T, max);
Min(T, min);
printf("max=%d\n", max);
printf("min=%d\n", min); Status s1 = DestroyTriplet(T);
printf("destroy state: %d\n", s1); getchar();
return ;
}
三元组ADT (数据结构C语言版) C++实现的更多相关文章
- c++学习书籍推荐《清华大学计算机系列教材:数据结构(C++语言版)(第3版)》下载
百度云及其他网盘下载地址:点我 编辑推荐 <清华大学计算机系列教材:数据结构(C++语言版)(第3版)>习题解析涵盖验证型.拓展型.反思型.实践型和研究型习题,总计290余道大题.525道 ...
- 数据结构C语言版 有向图的十字链表存储表示和实现
/*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...
- 数据结构C语言版 表插入排序 静态表
数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./* 数据结构C语言版 表插入排序 算法10.3 P267-P270 编译 ...
- 数据结构C语言版 弗洛伊德算法实现
/* 数据结构C语言版 弗洛伊德算法 P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...
- 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明
<数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑 链接☛☛☛ <数据结构>课本源码合辑 习题集全解析 链接☛☛☛ ...
- 【数据结构(C语言版)系列二】 栈
栈和队列是两种重要的线性结构.从数据结构角度看,栈和队列也是线性表,但它们是操作受限的线性表,因此,可称为限定性的数据结构.但从数据类型角度看,它们是和线性表大不相同的两类重要的抽象数据类型. 栈的定 ...
- 深入浅出数据结构C语言版(5)——链表的操作
上一次我们从什么是表一直讲到了链表该怎么实现的想法上:http://www.cnblogs.com/mm93/p/6574912.html 而这一次我们就要实现所说的承诺,即实现链表应有的操作(至于游 ...
- 深入浅出数据结构C语言版(8)——后缀表达式、栈与四则运算计算器
在深入浅出数据结构(7)的末尾,我们提到了栈可以用于实现计算器,并且我们给出了存储表达式的数据结构(结构体及该结构体组成的数组),如下: //SIZE用于多个场合,如栈的大小.表达式数组的大小 #de ...
- 数据结构(c语言版)文摘
第一章 绪论 数据结构:是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科. 数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理 ...
随机推荐
- selenium 列表循环定位方法。
话不多说,直接上代码. 就是循环第一层,然后拼接,然后继续循环,继续屏接,任你多少层都不是问题. def c_select(self, values, text): """ ...
- [shell] 循环判断输入值
做个记录 until [[ $flag == "yes" || $flag == "exit" ]] do read -p "请确认统一/合服前后数据 ...
- Is It A Tree?(并查集)
Description A tree is a well-known data structure that is either empty (null, void, nothing) or is a ...
- scrum立会报告+燃尽图(第二周第七次)
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2252 一.小组介绍 组名:杨老师粉丝群 组长:乔静玉 组员:吴奕瑶.公冶 ...
- 【Alpha】阶段第二次Scrum Meeting
[Alpha]阶段第二次Scrum Meeting 工作情况 团队成员 今日已完成任务 明日待完成任务 刘峻辰 发表评论接口 更新评论接口 赵智源 部署实际项目 编写脚本实现持续集成 肖萌威 编写注册 ...
- Python:三元运算
result=值1 if 条件 else 值2 如果条件为真,result=值1 如果条件为假,result=值2 例子: a,b,c=1,3,5 d=a if a>b else c print ...
- 基础系列(6)—— C#类和对象
一.类介绍 类(class)是C#类型中最基础的类型.类是一个数据结构,将状态(字段)和行为(方法和其他函数成员)组合在一个单元中.类提供了用于动态创建类实例的定义,也就是对象(objec ...
- Microsoft Orleans 之安装
先决条件 Orleans 是一个.net 类库集,为了使用它,你需要.net 4.5.1 或者更高版本,开发工具集需要visual studio 2015 或者更高版本或者其他支持的开发工具,不支持V ...
- JQuery EasyUI 引用加载分析
easyui是什么,就不介绍了,接触到前端的就算没用过,肯定也应该听说过.其次,本文不是介绍它提供如calendar.tree等这些功能如何使用的,这些官网上介绍都很详细,中文的网上也不少.本文是从e ...
- jdbc 6.0
1.获取数据库自动生成的键值 package com.rong.jielong; import java.sql.Connection; import java.sql.DriverManager; ...