1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 抽象数据类型三元组Triplet基本操作与实现 严蔚敏版

抽象数据类型三元组Triplet基本操作与实现 严蔚敏版

时间:2021-01-29 16:31:09

相关推荐

抽象数据类型三元组Triplet基本操作与实现       严蔚敏版

这个博客基本操作大部分来自教材《数据结构C语言版》严蔚敏版,实现了书中的大部分功能,并且用了三个文件。

一个是主函数,一个是功能模块,一个是头文件定义,用VC6.0++完成

//头文件声明#ifndef _FUNC_H#define _FUNC_H#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;typedef float ElemType;typedef ElemType *Triplet;extern Status InitTriplet (Triplet &t,ElemType v1,ElemType v2,ElemType v3);extern Status DestroyTriplet (Triplet t);extern Status get(Triplet t,int i,ElemType &e);extern Status put(Triplet &t,int i,ElemType e);extern Status Max(Triplet t,ElemType &e);extern Status Min(Triplet t,ElemType &e);extern Status IsAscend(Triplet t);extern Status IsDescend(Triplet t);extern Status Average(Triplet t,ElemType &e);int system(const char *string);#endif

//功能模块#include <stdio.h>#include <stdlib.h>#include "head.h"//初始化Status InitTriplet (Triplet &t,ElemType v1,ElemType v2,ElemType v3){t=(ElemType *)malloc(3*sizeof(ElemType)); if(!t) return OVERFLOW;t[0]=v1;t[1]=v2;t[2]=v3;return OK;}//销毁Status DestroyTriplet (Triplet t){free(t); t=NULL;return OK;}//返回第i个值Status get(Triplet t,int i,ElemType &e){if (i<1||i>3) return ERROR;e=t[i-1];return OK;}//置换Status put(Triplet &t,int i,ElemType e) {if (i<1||i>3) return ERROR; t[i-1]=e;return OK;}//判断升序Status IsAscend(Triplet t){return (t[0]<t[1])&&(t[1]<t[2]);}//判断降序Status IsDescend(Triplet t){return (t[0]>=t[1])&&(t[1]>=t[2]);}//求最大值Status 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 OK;}//求最小值Status 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 OK;}//求平均值Status Average(Triplet t,ElemType &e){e=(t[0]+t[1]+t[2])/3;return OK;}

//主函数#include <stdio.h>#include <stdlib.h>#include "head.h"void main(){Triplet p;ElemType e,v1,v2,v3;int i;char select;printf("输入三个数,建立一个三元组\n");scanf("%d%d%d",&v1,&v2,&v3);if (InitTriplet(p,v1,v2,v3)==OVERFLOW) printf("分配失败,退出程序!");else do {printf("\n");printf("1:取三元组第i个元素\n");printf("2:判断三元组元素是否递增\n");printf("3:求最大值\n");printf("4:置换第i个元素\n");printf("5:判断三元组元素是否递减\n");printf("6:求最小值\n");printf("7:求三元组平均值\n");printf("0:结束!\n");printf("请输入选择!\n");getchar();scanf("%c",&select);switch (select) {case '1': //getprintf("\ni=");scanf("%d",&i);if (get(p,i,e)==ERROR) printf("i值不合法\n");else printf("第%d个元素的值为:%d\n",i,e);break;case '2': //IsAscendprintf("3个元素分别为:%d,%d,%d\n",p[0],p[1],p[2]);printf("\n");if (IsAscend(p)==1) printf("三元组递增有序\n");else printf("三元组非递增有序\n"); break; case '3': //Maxprintf("3个元素分别为:%d,%d,%d\n",p[0],p[1],p[2]);Max(p,e);printf("最大值是:%d\n",e); break;case '4': //put printf("\n");printf("3个元素分别为:%d,%d,%d\n",p[0],p[1],p[2]);printf("请输入想置换的第i个元素");printf("\ni=");scanf("%d",&i); printf("\nx=");scanf("%d",&e); if (put(p,i,e)==ERROR) printf("i值不合法\n");else printf("置换第%d个元素后的3个元素分别为:%d,%d,%d\n",i,p[0],p[1],p[2]);break;case '5': //IsDescendprintf("\n");printf("3个元素分别为:%d,%d,%d\n",p[0],p[1],p[2])if (IsDescend(p)==1) printf("三元组递减有序\n");else printf("三元组非递减有序\n");break;case '6': printf("\n");printf("3个元素分别为:%d,%d,%d\n",p[0],p[1],p[2]);Min(p,e);printf("最小值是:%f\n",e); break;case'7':printf("\n");printf("3个元素分别为:%d,%d,%d\n",p[0],p[1],p[2]);Average(p,e);printf("平均值是:%.2f\n",e); break;case'0':printf("操作结束!"); break;default: printf("输入选择出错!\n");}// end of switch}while(select!='0'); //end of whileDestroyTriplet(p);}// end of main

三个文件放在一起放在一个工程中才能运行

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