文档详情

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

发布:2016-04-12约字共56页下载文档
文本预览下载声明
第一章 绪论 课堂习题 1、试写一算法,自大到小依次输出顺序读入的三个整数X,Y和Z的值。 【解答】 一解:IF XY X-Y; IF YZ Y-Z; IF XY X-Y; 此算法最坏情况下比较3次,移动(即赋值9次) 二解: IF XY {TEMP=X;X=Y;Y=TEMP;} IF YZ {TEMP=Z;Z=Y; IF XTEMP Y=TEMP ELSE {Y=X;X=TEMP;} 此算法最坏情况下比较3次,移动7次 三解: IF XY {IF YZ X-Y ELSE X-Z;} ELSE {IF XZ X-Z;} IF YZ Y-Z; 此算法最坏情况下比较3次,移动6次 2、抽象数据类型三元组的定义、表示和实现 【解答】抽象数据类型三元组的定义已经给出(见教材12页),要求设计实现三元组基本操作的演示程序。 #include stdio.h #include stdlib.h 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 (i1||i3) return ERROR; *e=T[i-1]; return OK; } Status Put(Triplet T,int i,ElemType e) { if (i1||i3) 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 pr
显示全部
相似文档