1 / 58
文档名称:

数据结构____用C语言描述__课后答案.doc

格式:doc   页数:58
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构____用C语言描述__课后答案.doc

上传人:1006108867 2014/1/31 文件大小:0 KB

下载得到文件列表

数据结构____用C语言描述__课后答案.doc

文档介绍

文档介绍:第一章绪论
课堂习题
1、试写一算法,自大到小依次输出顺序读入的三个整数X,Y和Z的值。
【解答】
一解:IF X<Y X<->Y;
IF Y>Z Y<->Z;
IF X<Y X<->Y;
此算法最坏情况下比较3次,移动(即赋值9次)
二解: IF X<Y {TEMP=X;X=Y;Y=TEMP;}
IF Y<Z {TEMP=Z;Z=Y;
IF X>TEMP Y=TEMP
ELSE
{Y=X;X=TEMP;}
此算法最坏情况下比较3次,移动7次
三解: IF X<Y
{IF Y>Z X<->Y
ELSE X<->Z;}
ELSE
{IF X<Z X<->Z;}
IF Y<Z Y<-Z;
此算法最坏情况下比较3次,移动6次
2、抽象数据类型三元组的定义、表示和实现
【解答】抽象数据类型三元组的定义已经给出(见教材12页),要求设计实现三元组基本操作的演示程序。
#include <>
#include <>
typedef int ElemType;
typedef ElemType *Triplet;
typedef int Status;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
Status InitTriplet(Triplet *T)
{
ElemType v1,v2,v3;
*T=(ElemType *)malloc(3*sizeof(ElemType));
if (*T==0) return(OVERFLOW);
scanf("%d,%d,%d",&v1,&v2,&v3);
(*T)[0]=v1; (*T)[1]=v2; (*T)[2]=v3;
}
Status DestroyTriplet(Triplet *T)
{
free(*T);
*T=NULL;
}
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 IsAscending(Triplet T)
{
return((T[0]<T[1])&&(T[1]<T[2]));
}
Status IsDescending(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;
}
void main()
{
Triplet T;
ElemType e;
int select,i;
printf("请输入三个数,建立一个三元组:\n");
if (InitTriplet(&T)==OVERFLOW)
printf("存储空间分配失败,退出程序\n");
else
{
do
{
printf("1:取三元组第I个元素\n");
printf("2:修改三元组第I个元素\n");
printf("3:判断三元组元素是否递增\n");
printf("4:判断三元组元素是否递减\n");
printf("5:取三元组最大元\n");
printf("6:取三元组最小元\n");
printf("0:结束\n");
scanf("&d",&select);
switch(select)
{
case 1:
printf("\ni=");
scanf("%d",&i);
if (Get(T,i,&e)==ERROR) printf("I值输入不合法\n");
else printf("第I个元素的值为%d\n",e); break;
case 2:
printf("\ni=");
scanf("%