顺序表应用5:有序顺序表归并
2016-05-27 13:30
344 查看
顺序表应用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 3 1 3 5 6 9 2 4 10
示例输出
1 2 3 4 5 6 9 10
提示
view plaincopyprint如果您复制代码时出现行号,请点击左边的“view
plain”后再复制
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int *creat_list(int size)
{
int *q;
q=(int *)malloc(size*sizeof(int ));
return q;
}
void destory_list(int *q)
{
free(q);
}
void ch_list(int *p,int *a,int *b,int n,int m)
{
int i,j,k;
k=i=j=0;
while(i<n&&j<m)
{
if(p[i]<a[j])
b[k++]=p[i++];
else if(p[i]>a[j])
b[k++]=a[j++];
else
{
b[k++]=p[i++];
b[k++]=a[j++];
}
}
if(i<n)
{ while(i<n)b[k++]=p[i++];}
else
{ while(j<m)b[k++]=a[j++];}
}
void display_list(int *p,int len)
{
int i=0;
for(;i<len;i++)
{
printf("%d",p[i]);
if(i<len-1)printf(" ");
else printf("\n");
}
}
int main()
{
int n,m,*p,j,*a,*b;
scanf("%d%d",&n,&m);
p=creat_list(n);
a=creat_list(m);
b=creat_list(n+m);
for(j=0;j<n;j++)
scanf("%d",&p[j]);
for(j=0;j<m;j++)
scanf("%d",&a[j]);
ch_list(p,a,b,n,m);
display_list(b,m+n);
destory_list(p);
destory_list(a);
destory_list(b);
return 0;
}
相关文章推荐
- patchdiff2 函数比较插件
- HTML5对比HTML4的主要改变和改进总结
- vlc相关学习资料汇总及零散技术总结
- 掘金翻译计划
- UWP 设备分辨率
- centos 6.5 x64安装php 7
- Android使用源码中隐藏的API
- Ext.form.TextArea中width,height无效问题
- WAS8.5群集安装
- 报表工具如何实现多次导入Excel
- 找水王2
- 3、时间和随机数
- 《基于VC平台下C++反汇编与逆向分析研究——No.2》
- Spring入门简介(学习笔记)
- iOS获取当前app的名称和版本号
- 多址技术与频分复用
- 无限下拉,还是分页?
- 第十三周项目2动物这样叫
- VLC音频重采样Audio resample核心流程梳理
- 通过回调在fragment中获取activity的触摸事件