1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 抽象数据类型Triplet的表示和实现。

抽象数据类型Triplet的表示和实现。

时间:2022-02-26 10:33:50

相关推荐

抽象数据类型Triplet的表示和实现。

抽象数据类型Triplet的表示和实现。

建立一个项目,包含以下三个部分:

(1)第一部分:Common.h

#define TRUE 1#define FALSE0#define OK1 #define ERROR0#define INFEASIBLE -1#define OVERFLOW-2typedef int Status;

在VS下,需将头文件:Common.h做些修改:

#define TRUE 1#define FALSE0#define OK1 #define ERROR0#define INFEASIBLE -1typedef int Status;

(2)第二部分:Triplet.h

#include "Common.h"#include<cstdlib>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的值。T = (ElemType*)malloc(3 * sizeof(ElemType));if (!T) exit(OVERFLOW);//分配存储空间失败T[0] = v1; T[1] = v2; T[2] = v3;return OK;} //InitTripletStatus DestroyTriplet(Triplet& T){//操作结果:三元组T被销毁。free(T);T = NULL;return OK;} //DestroyTripletStatus Get(Triplet T, int i, ElemType& e){//用e返回T的第i元的值if (i < 1 || i>3)return ERROR;e = T[i - 1];return OK;} //GetStatus 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;} // PutStatus IsAscending(Triplet T){//如果三元组T的3个元素按升序排列,则返回1,否则返回0。return (T[0] >= T[1]) && (T[1] >= T[2]);} //IsAscendingStatus IsDescending(Triplet T){//如果三元组T的3个元素按降序排列,则返回1,否则返回0。return (T[0] <= T[1]) && (T[1] <= T[2]);} //IsDescendingStatus Max(Triplet T, ElemType& e){//用e返回T的3个元素中的最大值。e = (T[0] >= T[1]) ? ((T[0] >= T[2]) ? T[0] : T[2]) : ((T[1] >= T[2]) ? T[1] : T[2]);return OK;}Status Min(Triplet T, ElemType& e){//用e返回T的3个元素中的最小值。e = (T[0] <= T[1]) ? ((T[0] <= T[2]) ? T[0] : T[2]) : ((T[1] <= T[2]) ? T[1] : T[2]);return OK;}

(3)第三部分:main.cpp

#include<stdio.h>#include "Triplet.h"int main(){Triplet triplet; //等价于int* triplet ElemType e;//等价于int e int i;InitTriplet(triplet, 4, 7, 5);//初始化操作,返回值是1 for (i = 0; i < 3; i++){Get(triplet, i + 1, e);//得到的返回值为OK,是1 最终e为triplet[0],为4printf("%d %d\n", triplet[i], e);//打印出triplet[0]和e的值,都为4 }e = 13;//对e重新赋新值13 Put(triplet, 2, e);//更改triplet[1]的值为13for (i = 0; i < 3; i++)printf("%d ", triplet[i]);//分别打印出triplet[0]、triplet[1]、triplet[2]的值,分别为4、13、5 printf("\n");if (IsAscending(triplet))//返回值为0 printf("升序\n");//不执行 else{if (IsDescending(triplet))//返回值为0 printf("降序\n");//不执行 elseprintf("乱序\n");//执行 }Max(triplet, e);//调用Max函数,把数组最大值赋值给e printf("最大值: %d\n", e);//输出最大值e Min(triplet, e);//调用Min函数,把数组最小值赋值给e printf("最小值: %d\n", e);//输出最小值e DestroyTriplet(triplet);//使指针triplet置空,防止产生野指针 return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。