数据结构(C语言版)三元组的基本操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include "h1.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("1:取三元组第i个元素\n");
printf("2:判断三元组元素是否递增\n");
printf("3:求最大值\n");
printf("4:置换第i个元素\n");
printf("0:结束!\n");
printf("请输入选择!\n");
getchar();
scanf("%c",&select);
switch (select)
{case '1':
printf("\ni=");
scanf("%d",&i);
if (get(p,i,e)==ERROR) printf("i值不合法\n");
else printf("第%d个元素的值为:%d\n",i,e); break;
case '2':
if (IsAscend(p)==1) printf("三元组递增有序\n");
else printf("三元组非递增有序\n"); break;
case '3':
Max(p,e);
printf("最大值是:%d\n",e);break;
case '4':
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 '0':
printf("操作结束!"); break;
default: printf("输入选择出错!\n");
}// end of switch
}while(select!='0'); //end of while
DestroyTriplet(p);
}// end of main
Status InitTriplet (Triplet &t,ElemType v1,ElemType v2,ElemType v3) {//初始化三元组t
t=(ElemType *)malloc(3*sizeof(ElemType));
if(!t) return OVERFLOW;
t[0]=v1;t[1]=v2;t[2]=v3;
return OK;
}// end of InitTriplet
Status DestroyTriplet (Triplet &t)
{//结构销毁t
free(t); t=NULL;
return OK;
}//end of DestroyTriplet
Status get(Triplet t,int i,ElemType &e)
{//取三元组t的第i个元素,用e返回
if (i<1||i>3) return ERROR;
e=t[i-1];
return OK;
}// end of get
Status put(Triplet &t,int i,ElemType e)
{//用值e 去替换三元组t 的第i个元素的值
if (i<1||i>3) return ERROR;
t[i-1]=e;
return OK;
}//end of put
Status IsAscend(Triplet t)
{//判断三元组t是否是升序
return (t[0] }//end of IsAscend 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; }//end of Max