数据结构第5章例题与答案5
来源:优易学  2010-1-14 18:18:17   【优易学:中国教育考试门户网】   资料下载   IT书店
38. 完善下列程序,每小题在pascal语言(a)和c语言(b)中任选一题。下面的程序将数列1,2,3,…,n*n,依次按蛇型方式存放在二维数组a[1..n,1..n]中。即 (示意圖编者略)。
(a)算法的pascal 语言程序描述(编者略):(b)算法的c语言程序描述:
#define  nmax  10
#include “stdio.h”
main()
{ int  i,j,n,k,p,q,m;
  int  a [nmax][nmax];
  scanf(“%d”,&n);
  m=1;
  for(k=1;(1)     ;k++)
{if(k<n) q=k;    else(2)   __;
 for(p=1;p<=q;p++)
  {if(3)    {i=q-p+1;j=p;}
   else{i=p;j=q-p+1;}
   if(4)   {i=i+n-q;j=j+n-q;}
        a[i][j]=m;(5)   _;
 }
for(i=1;i<=n;i++)
 { for(j=1;j<=n;j++)
   printf(“%4d”,a[i][j]);printf(“\n”); 
}
}
}  【上海大学 2002 六、1 (10分)】 
18. 数组 h[ 1:1000] 中存放着1000个大小不同的正整数;    
   (1) 选择一分类算法使能最快地得到其中10个最大的数,简要说明理由;
   (2) 编写一程序seek() ,执行该程序时,在命令行中提供二个参数;
           seek a n<enter> 表示需打印h[ ]中n个最大数。
seek i n<enter> 表示需打印h[ ]中n个最小数。 【浙江大学 1994 八 (18分)】
19.已知两个定长数组,它们分别存放两个非降序有序序列,请编写程序把第二个数组序列中的数逐个插入到前一个数组序列中,完成后两个数组中的数分别有序(非降序)并且第一数组中所有的数都不大于第二个数组中的任意一个数。注意,不能另开辟数组,也不能对任意一个数组进行排序操作。例如,
第一个数组为:4,12,28
第二个数组为:1,7,9,29,45
输出结果为:1,4,7--------------第一个数组
9,12,28,29,45---------第二个数组   【上海大学 1998 四 (20分)】
20. 设数组a[1..n]中,a[n-2k+1..n-k]和[n-k+1..n]中元素各自从小到大排好序,试设计一个算法使a[n-2k+1..n]按从小到大次序排好序。并分析算法所需的计算时间。【福州大学 1998 四、3 (10分)】
21. 设a[1..100]是一个记录构成的数组,b[1..100]是一个整数数组,其值介于1至100之间,现要求按b[1..100]的内容调整a中记录的次序,比如当b[1]=ll时,则要求将a[1]的内容调整到a[11]中去。规定可使用的附加空间为o(1)。【中科院计算所 2000 七(15分)】
22. 给定有m个整数的递增有序数组a[1..m]和有n个整数的递减有序数组b[1..n],试写出算法:将数组a和b归并为递增有序数组c[l..m+n]。(要求:算法的时间复杂度为o(m+n))
【华中理工大学 2000 八、1(10分)】
23.在数组 a[1..n]中有n个数据,试建立一个带有头结点的循环链表,头指针为h,要求链中数据从小到大排列,重复的数据在链中只保存一个。【南京理工大学 1998 七、2 (7分)】

责任编辑:小草

文章搜索:
 相关文章
热点资讯
热门课程培训