原创 数据结构第一章的习题参考答案

2008-3-31 21:15 3966 6 6 分类: 软件与OS
这是这个学期数据结构课程的习题参考答案,注意:不是我上课布置的作业的答案,作业答案晚些再贴出来,现在比较忙,没太多时间做这件事情,抱歉.

说明:下面的代码在VC6上编译测试通过,稍加改动可以在turbo c或者gcc上编译,同样我没有那么多时间在多个编译器上测试.此外,这只是参考答案,可能不是最好的答案,甚至可能存在错误.如果你发现错误或者有更好的解答,欢迎发email给我.

 

#include "stdafx.h"
#include "stdio.h"

 

 

//习题1.16算法实现
//辅助函数,实现两个数的交换
void swap(int *a, int *b)
{
 int tmp=*a;
 *a=*b;
 *b=tmp;
}

 

 

void print_descend(void)
{
 int x,y,z;
 scanf("%d,%d,%d",&x,&y,&z);
 if(x<y)
  swap(&x,&y);
 if(y<z)
  swap(&y,&z);
 if(x<y)
  swap(&x,&y);
 printf("%d\t%d\t%d\n",x,y,z);
}

 

 

//习题1.17
int kfib(int m,int k)
{
 int i,result=0;

 

 

 if(m<k-1)
  return 0;
 if (m==k-1)
  return 1;
 for (i=1;i<=k;i++)
 {
  result+=kfib(m-i,k);
 }
 return result;
}
//习题1.19
#define ARRAYSIZE  32
#define MAXINT     32768
bool cal(unsigned int i,int *result)
{
 int tmp="1";
 unsigned int j;
 if(i>ARRAYSIZE)
  return false;
 for(j=1;j<=i;j++)
 {
  tmp=tmp*2*j;
 }
 if(tmp>MAXINT)
  return false;
 *result=tmp;
 return true;
}

 

 


 

 

int main(int argc, char* argv[])
{
 //测试习题1.16
// print_descend();
// getchar();
 //测试习题1.17
 int i,result=0;
 for(i=0;i<13;i++)
 {
 result=kfib(i,5);
 printf("kfib:%d\n",result);
 }
 getchar();
 //测试习题1.19
 int ret1;
 if(!cal(5,&ret1))
  printf("error\n");
 else
 {
  printf("cal result: %d\n",ret1);
 }
 return 0;
}
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /3 下一条