数据结构(C语言版)三元组的基本操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档