数据结构(C语言)全程更新第一版震撼来袭

                     三元组的使用

  最近在学习严蔚敏编著的数据结构(C语言版)发现很多人对数据结构这么科目的掌握很费劲,数据结构作为一种重要的思想对我们整个编程生涯会产生不小的影响,因此笔者在进行了一段时间的学习后,决定将自己的学习心得和代码分享出来,以供更多的读者来学习。因为笔者主要从事安卓的开发,因此对于安卓和Java开源的精神所深深的打动,知识是用来共享的,经验是用来共同进步的。希望读者们在看完之后能对自己的数据结构有一定的帮助奋斗这是第一个示例,会在过年前更新完每章最基础最常用的示例代码,希望大家广泛传播和学习。

<span style="font-size:10px;">  </span><pre name="code" class="html">/*设计实现抽象数据类型三元组 (Triplet) 。
每个三元组由任意三个实数的序列构成,基本操作包括:
创建一个三元组,取三元组的任意一个分量,置三元组
的任意一个分量,求三元组的最大分量、最小分量,
显示三元组,销毁三元组等。
方法1:用结构体封装需要定义的数据类型,如定义三元组ADT时,
首先用结构体封装“三元组”的三个分量。
并利用typedef对结构体重新命名。
*/
#include<stdio.h>			//引入库
#include<stdlib.h>			//引入库
typedef int Status;			//给int型起个别名为status
typedef float ElemType;      //给float型起个别名为ElemType

//建立一个结构体,起名为Triplet
typedef struct{
	ElemType e[3];
}Triplet;

//构造一个三元组,元素e1,e2,e3分别被赋以参数v1,v2,.v3的值
Status InitTriplet(Triplet &T,Status v1,Status v2,Status v3)
{
	T.e[0]=v1;			//赋值
	T.e[1]=v2;			//赋值
	T.e[2]=v3;			//赋值
	
	return 0;
}

//打印三元组
Status printElem(Triplet T)
{
	printf("三元组为:\n");
	printf("%f,%f,%f",T.e[0],T.e[1],T.e[2]);
	printf("\n");
}

//取出三元组中第i个元素的值
Status GetElem(Triplet T,Status i,ElemType &e)
{
	printf("请输入你想打印的三元组中的第几个元素的值:\n");
	scanf("%d",&i);
	switch(i){
	   	case 1:
			printf("三元组的第一个数=%f",T.e[i-1]);break;
		case 2:
			printf("三元组的第二个数=%f",T.e[i-1]);break;
		case 3:
			printf("三元组的第三个数=%f",T.e[i-1]);break;
	   }
}

//获取三元组中的最大值
Status getMax(Triplet T,ElemType &e)
{
    if(T.e[0]>T.e[1]){
    	e=T.e[0];
    }
    else{
    	e=T.e[1];
    }
    if(T.e[2]>e){
        e=T.e[2];
    }

    return e;
}

//获取三元组中的最小值
Status getMin(Triplet T,ElemType &e)
{
	if(T.e[0]<T.e[1])
        e=T.e[0];
	else
	   	e=T.e[1];
  	if(T.e[2]<e)
    	e=T.e[2];

    return e;
}

//改变三元组中的第i元的值为e
Status PutElem(Triplet &T,Status i,ElemType e)
{
    printf("请输入你想改变的三元组中的第几个元素的值:");
    printf("(你将会把你所选的元素变成10)\n");
	scanf("%d",&i);
	if(i<1||i>3){     //加入if语句 用来判断i是不是在1-3内  用来增强代码的健壮性
    	return 0;
	}
	T.e[i-1]=e;   //对第i的元素赋值e
	printf("改变后的新的三元组的值为:");
	printElem(T);
	return 0;
}

//三元组T被销毁
Status DestoryTriplet(Triplet &T){
	return 1;
}

Status main()
{
	Status v0,v1,v2;
	Status i;
	ElemType e;
	Triplet T;
	printf("请给三元组赋值v0,v1,v2(每个数用逗号个隔开):\n");
	scanf("%d,%d,%d",&v0,&v1,&v2);
	InitTriplet(T,v0,v1,v2);    //InitTriplet(&T,v0,v1,v2);    //建立三元组并赋值
	printElem(T);				//打印三元组
	GetElem(T,i,e);             //GetElem(T,i,&e);				//取出三元组中第i个元素的值
	printf("\n");
	printf("三元组最大值为:%d",getMax(T,e));//printf("三元组最大值为:%f",getMax(T,&e));		//获取三元组中的最大值
	printf("\n");
	printf("三元组最小值为:%d",getMin(T,e));//printf("三元组最小值为:%f",getMin(T,&e));		//获取三元组的最小值
	printf("\n");
	PutElem(T,i,e);	                    //PutElem(&T,i,e);				//改变三元组中的第i元的值为e
	DestoryTriplet(T);                  //DestoryTriplet(&T);   		//三元组T被销毁
	system("pause");
	
	return 0;
}

 

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值