您现在的位置: 汕头自考网 >> 串讲笔记 >> 工学类 >> 正文
  • 北大“数据结构”上机考试复习题总结(2)
  • 发布日期时间:2007-3-16  来源:不详   点击数:  作者:佚名
“%4d”,a[i]);

  printf(“\n”);

  }

  数据结构练习题5

  1. 编一C程序,它能读入一个大写英文字母串(字母个数不多于100,字母两两不同),并构造以这些字母为关键字的二叉排序树,再输出该二叉排序树的后序序列和页结点个数。

  (注:程序的可执行文件名必须是 e1.exe,存于你的账号或其debug目录下,否则无成绩)

  2. 编一C程序,它能读入两组整数(每组整数都以-9999为结束标记,-9999不算在内。个数都不大于1000),并以从小到大的次序输出既在第一组整数中也在第二组整数中的所有整数(同一个整数不能输出两次)。(输入时,两个相邻的整数用空格隔开)。

  (注:程序的可执行文件名必须是 e2.exe,存于你的账号或其debug目录下,否则无成绩)

  #include <stdio.h>

  void paixu(int r[],int n)

  {

  int i,j,k;

  int exchange;

  for(i=0;i<=n;i++)

  {

  exchange=0;

  for(j=n-1;j>=i;j——)

  if(r[j+1]<r[j])

  {

  k=r[j+1];

  r[j+1]=r[j];

  r[j]=k;

  exchange=1;

  }

  if(!exchange)

  break;

  }

  }

  int jiaoji(int m[],int n[],int l[],int countaa,int countbb)

  {

  int w,x,y;

  int i=0,j=0,k=0;

  for(w=0;w<=countaa;w++)

  {

  for(x=w+1;x<=countaa;x++)

  {

  if(m[w]==m[x])

  {

  countaa——;

  for(y=x;y<=countaa;y++)

  {

  m[y]=m[y+1];

  }

  x——;

  }

  }

  }

  while(i<=countaa)

  {

  for(j=0;j<=countbb;j++)

  {

  if(m[i]==n[i])

  {

  l[k]=m[i];

  k++;

  break;

  }

  }

  i++;

  }

  return k;

  }

  void main()

  {

  int a[1000],b[1000],c[2000];

  int excange=0,i,countA,countB,countC;

  printf(“请输入数组a: \n”);

  for(i=0;i<=1000;i++)

  {

  scanf(“%d”,&a[i]);

  if(a[i]==-9999)

  break;

  }

  countA=i-1;

  paixu(a,countA);

  printf(“请输入数组b: \n”);

  for(i=0;i<=1000;i++)

  {

  scanf(“%d”,&b[i]);

  if(b[i]==-9999)

  break;

  }

  countB=i-1;

  paixu(b,countB);

  countC=jiaoji(a,b,c,countA,countB);

  printf(“\n\n”);

  for(i=0;i<=countC-1;i++)

  printf(“%d”,c[i]);

  printf(“\n”);

上一页  [1] [2] 

文章转载请注明来源于:汕头自考网