顺序表应用5:有序顺序表归并

来源:互联网 发布:java string转date 编辑:程序博客网 时间:2024/06/02 18:01

顺序表应用5:有序顺序表归并

Time Limit: 100ms   Memory limit: 800K  有疑问?点这里^_^

题目描述

已知顺序表A与B是两个有序的顺序表,其中存放的数据元素皆为普通整型,将A与B表归并为C表,要求C表包含了A、B表里所有元素,并且C表仍然保持有序。

输入

 输入分为三行:
第一行输入m、n(1<=m,n<=10000)的值,即为表A、B的元素个数;
第二行输入m个有序的整数,即为表A的每一个元素;
第三行输入n个有序的整数,即为表B的每一个元素;

输出

 输出为一行,即将表A、B合并为表C后,依次输出表C所存放的元素。

示例输入

5 31 3 5 6 92 4 10

示例输出

1 2 3 4 5 6 9 10

提示

 
view plaincopyprint如果您复制代码时出现行号,请点击左边的“view plain”后再复制
  1. #include<stdio.h>  
  2. #include<stdlib.h>  
  3. #include<string.h>  
  4. int *creat_list(int size)  
  5. {  
  6.     int *q;  
  7.     q=(int *)malloc(size*sizeof(int ));  
  8.     return q;  
  9. }  
  10. void destory_list(int *q)  
  11. {  
  12.     free(q);  
  13. }  
  14. void ch_list(int *p,int *a,int *b,int n,int m)  
  15. {  
  16.     int i,j,k;  
  17.     k=i=j=0;  
  18.     while(i<n&&j<m)  
  19.     {  
  20.         if(p[i]<a[j])  
  21.             b[k++]=p[i++];  
  22.         else if(p[i]>a[j])  
  23.             b[k++]=a[j++];  
  24.         else  
  25.         {  
  26.             b[k++]=p[i++];  
  27.             b[k++]=a[j++];  
  28.         }  
  29.     }  
  30.     if(i<n)  
  31.        { while(i<n)b[k++]=p[i++];}  
  32.     else  
  33.        { while(j<m)b[k++]=a[j++];}  
  34. }  
  35. void display_list(int *p,int len)  
  36. {  
  37.     int i=0;  
  38.     for(;i<len;i++)  
  39.     {  
  40.         printf("%d",p[i]);  
  41.         if(i<len-1)printf(" ");  
  42.         else printf("\n");  
  43.     }  
  44. }  
  45. int main()  
  46. {  
  47.     int n,m,*p,j,*a,*b;  
  48.     scanf("%d%d",&n,&m);  
  49.         p=creat_list(n);  
  50.         a=creat_list(m);  
  51.         b=creat_list(n+m);  
  52.     for(j=0;j<n;j++)  
  53.             scanf("%d",&p[j]);  
  54.      for(j=0;j<m;j++)  
  55.             scanf("%d",&a[j]);  
  56.      ch_list(p,a,b,n,m);  
  57.     display_list(b,m+n);  
  58.         destory_list(p);  
  59.         destory_list(a);  
  60.         destory_list(b);  
  61.     return 0;  
  62. }  
  63.    
  64.   
0 0
原创粉丝点击