ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

抽象数据类型三元组的定义

2019-07-22 15:52:07  阅读:455  来源: 互联网

标签:Status Triplet return 定义 ElemType 三元组 抽象数据类型 OK


 主要功能:构造三元组;销毁三元组;用e返回T的第i元的值;置T的第i元的值为e;判断是否为升序排列;判断是否为降序排列;求最大值;求最小值;显示三元组。
1 #include <stdio.h> 2 #include <stdlib.h> 3 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<自定义数据类型<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 4 typedef int Status; 5 typedef int ElemType; 6 typedef ElemType *Triplet;
7 #define OVERFLOW -2 8 #define OK 1 9 #define ERROR 0 10 //---------------------------------------------构造三元组T----------------------------------------------- 11 Status InitTriplet(Triplet &T,ElemType v1,ElemType v2,ElemType v3) 12 {//构造三元组T,依此置T的三个元素的初值为v1,v2,v3 13 T=(ElemType*)malloc(3*sizeof(ElemType));//分配三个元素的存储空间 14 if(!T) exit(OVERFLOW);//分配存储空间失败 15 T[0] =v1; T[1]=v2; T[2]=v3; 16 return OK; 17 } 18 //--------------------------------------------销毁三元组T------------------------------------------------ 19 Status DestroyTriplet(Triplet &T) 20 { 21 free(T); 22 T=NULL; 23 return OK; 24 } 25 //---------------------------------------用e返回T的第i元的值---------------------------------------------- 26 Status Get(Triplet T,int i,ElemType e) 27 { 28 if(i<1||i>3) return ERROR; 29 e=T[i-1]; 30 return e; 31 } 32 //------------------------------------置T的第i元的值为e-------------------------------------------------- 33 Status Put(Triplet T,int i,ElemType e) 34 { 35 if(i<1||i>3) return ERROR; 36 T[i-1]=e; 37 return OK; 38 } 39 //----------------------------------升序排列返回1,否则返回0---------------------------------------------------- 40 Status IsAscending(Triplet T) 41 { 42 return (T[0]<=T[1])&&(T[1]<=T[2]); 43 } 44 //---------------------------------降序排列返回1,否则返回0----------------------------------------------------- 45 Status IsDescending(Triplet T) 46 { 47 return (T[0]>=T[1])&&(T[1]>=T[2]); 48 } 49 //---------------------------------------用e返回最大值-------------------------------------------------------- 50 Status Max(Triplet T,ElemType &e) 51 { 52 e=(T[0]>=T[1])?((T[0]>=T[2])?T[0]:T[2]):((T[1]>=T[2])?T[1]:T[2]); 53 return e; 54 } 55 //----------------------------------------用e返回最小值------------------------------------------------- 56 Status Min(Triplet T,ElemType &e) 57 { 58 e=(T[0]<=T[1])?((T[0]<=T[2])?T[0]:T[2]):((T[1]<=T[2])?T[1]:T[2]); 59 return e; 60 } 61 //-----------------------------------------显示三元组--------------------------------------------------- 62 Status Print(Triplet T) 63 { 64 printf("%d %d %d",T[0],T[1],T[2]); 65 return OK; 66 } 67 //------------------------------------------主函数--------------------------------------------------------- 68 main() 69 { 70 Triplet T; 71 ElemType e,v1,v2,v3; 72 int i,k,m; 73 printf("请输入v1,v2,v3的值(用空格隔开):"); 74 scanf("%d %d %d",&v1,&v2,&v3); 75 InitTriplet(T,v1,v2,v3); 76 printf("功能选择:\n"); 77 printf("1.用e返回T的第i元的值;\n"); 78 printf("2.置T的第i元的值为e;\n"); 79 printf("3.是否为升序排列;\n"); 80 printf("4.是否为降序排列;\n"); 81 printf("5.显示最大值;\n"); 82 printf("6.显示最小值;\n"); 83 printf("7.显示三元组;\n"); 84 printf("8.销毁三元组;\n"); 85 printf("9.结束\n"); 86 for(int num=1;;num++) 87 { 88 printf("\n---------------------\n"); 89 printf("请输入所选功能:"); 90 scanf("%d",&k); 91 if(k==1) 92 { 93 printf("请输入i值:"); 94 scanf("%d",&i); 95 m=Get(T,i,e); 96 printf("%d",m); 97 } 98 if(k==2) 99 { 100 printf("请输入i,e值(用空格隔开)"); 101 scanf("%d %d",&i,&e); 102 Put(T,i,e); 103 } 104 if(k==3) 105 { 106 m=IsAscending(T); 107 if(m==1) 108 printf("是"); 109 else printf("否"); 110 } 111 if(k==4) 112 { 113 m=IsDescending(T); 114 if(m==1) 115 printf("是"); 116 else printf("否"); 117 } 118 if(k==5) 119 { 120 m=Max(T,e); 121 printf("%d",m); 122 } 123 if(k==6) 124 { 125 m=Min(T,e); 126 printf("%d",m); 127 } 128 if(k==7) 129 Print(T); 130 if(k==8) 131 DestroyTriplet(T); 132 if(k==9) 133 break; 134 } 135 }

 

标签:Status,Triplet,return,定义,ElemType,三元组,抽象数据类型,OK
来源: https://www.cnblogs.com/tangzherui/p/11226250.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有