很久没用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++实现的更多相关文章

  1. c++学习书籍推荐《清华大学计算机系列教材:数据结构(C++语言版)(第3版)》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <清华大学计算机系列教材:数据结构(C++语言版)(第3版)>习题解析涵盖验证型.拓展型.反思型.实践型和研究型习题,总计290余道大题.525道 ...

  2. 数据结构C语言版 有向图的十字链表存储表示和实现

    /*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...

  3. 数据结构C语言版 表插入排序 静态表

    数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./*  数据结构C语言版 表插入排序  算法10.3 P267-P270  编译 ...

  4. 数据结构C语言版 弗洛伊德算法实现

    /* 数据结构C语言版 弗洛伊德算法  P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...

  5. 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明

    <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑  链接☛☛☛ <数据结构>课本源码合辑 习题集全解析  链接☛☛☛  ...

  6. 【数据结构(C语言版)系列二】 栈

    栈和队列是两种重要的线性结构.从数据结构角度看,栈和队列也是线性表,但它们是操作受限的线性表,因此,可称为限定性的数据结构.但从数据类型角度看,它们是和线性表大不相同的两类重要的抽象数据类型. 栈的定 ...

  7. 深入浅出数据结构C语言版(5)——链表的操作

    上一次我们从什么是表一直讲到了链表该怎么实现的想法上:http://www.cnblogs.com/mm93/p/6574912.html 而这一次我们就要实现所说的承诺,即实现链表应有的操作(至于游 ...

  8. 深入浅出数据结构C语言版(8)——后缀表达式、栈与四则运算计算器

    在深入浅出数据结构(7)的末尾,我们提到了栈可以用于实现计算器,并且我们给出了存储表达式的数据结构(结构体及该结构体组成的数组),如下: //SIZE用于多个场合,如栈的大小.表达式数组的大小 #de ...

  9. 数据结构(c语言版)文摘

    第一章  绪论 数据结构:是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等的学科. 数据:是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理 ...

随机推荐

  1. Spring学习(3):Spring概述(转载)

    1. Spring是什么? Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发. 在面向对象思想中 ...

  2. 【python】详解time模块功能asctime、localtime、mktime、sleep、strptime、strftime、time等函数以及时间的加减运算

    在Python中,与时间处理相关的模块有:time.datetime以及calendar.学会计算时间,对程序的调优非常重要,可以在程序中狂打时间戳,来具体判断程序中哪一块耗时最多,从而找到程序调优的 ...

  3. Linux 深入理解inode/block/superblock

    基础命令学习目录首页 原文链接:https://blog.csdn.net/Ohmyberry/article/details/80427492 档案系统特性 传统的磁盘与档案系统之应用中,一个分割槽 ...

  4. [leetcode-914-X of a Kind in a Deck of Cards]

    In a deck of cards, each card has an integer written on it. Return true if and only if you can choos ...

  5. Yogurt factory

    Description The cows have purchased a yogurt factory that makes world-famous Yucky Yogurt. Over the ...

  6. 互评Alpha版本——可以低头,但没必要——取件帮

    基于NABCD评论作品,及改进建议: 1.根据(不限于)NABCD评论作品的选题 (1)N(Need,需求) 随着电商平台的发展,越来越多的人选择网购,但是东师的一部分快递网点不在校内,需要走很长的一 ...

  7. 王者荣耀交流协会final冲刺第五次scrum会议

    成员王超,高远博,冉华,王磊,王玉玲,任思佳,袁玥全部到齐,王磊拍照. master:高远博 2.时间跨度 2017年12月5日 18:00 - 18:31,总计31分钟 3.地点 一食堂二楼沙发座椅 ...

  8. win10自带中文输入法的用户体验

    用户界面: 貌似没有什么界面,不过我感觉这就是最大的优点,没有过度渲染的界面,没有烦人的推送.弹窗,没有定期不定期的更新提示,简洁也是我使用这款输入法的最主要的原因 记住用户的选择: 这点我认为win ...

  9. 蜗牛慢慢爬 LeetCode 3. Longest Substring Without Repeating Characters [Difficulty: Medium]

    题目 Given a string, find the length of the longest substring without repeating characters. Examples: ...

  10. Spring配置声明

    <...     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xmlns:p="htt ...