顺序表应用5:有序顺序表归并
2016-09-20 22:22
441 查看
4000
顺序表应用5:有序顺序表归并
Time Limit: 100MSMemory Limit: 800KBSubmitStatisticProblem Description
已知顺序表A与B是两个有序的顺序表,其中存放的数据元素皆为普通整型,将A与B表归并为C表,要求C表包含了A、B表里所有元素,并且C表仍然保持有序。Input
输入分为三行:第一行输入m、n(1<=m,n<=10000)的值,即为表A、B的元素个数;第二行输入m个有序的整数,即为表A的每一个元素;第三行输入n个有序的整数,即为表B的每一个元素;Output
输出为一行,即将表A、B合并为表C后,依次输出表C所存放的元素。Example Input
5 3 1 3 5 6 9 2 4 10
Example Output
1 2 3 4 5 6 9 10
01 | #include<stdio.h> |
02 | #include<malloc.h> |
03 | #definemaxsize 10000 |
04 | #define MAXSIZE 20000 |
05 | int m,n; |
06 | struct node |
07 | { |
08 | int *elem; |
09 | int listsize; |
10 | int len; |
11 | }A,B,C; |
12 | int Init1(node&L) |
13 | { |
14 | L.elem=( int *) malloc (maxsize* sizeof ( int )); |
15 | if (!L.elem) return -1; |
16 | L.len=0; |
17 | L.listsize=maxsize; |
18 | return 0; |
19 | } |
20 | int Init2(node&L) |
21 | { |
22 | L.elem=( int *) malloc (MAXSIZE* sizeof ( int )); |
23 | if (!L.elem) return -1; |
24 | L.len=0; |
25 | L.listsize=MAXSIZE; |
26 | return 0; |
27 | } |
28 | int Creat(node&L, int n) |
29 | { |
30 | int i; |
31 | for (i=0;i<n;i++) |
32 | { |
33 | scanf ( "%d" ,&L.elem[i]); |
34 | } |
35 | L.len=n; |
36 | return 0; |
37 | } |
38 | int Merge(nodeA,node B,node &C) |
39 | { |
40 | int i,j; |
41 | Init2(C); |
42 | int k=0; |
43 | for (i=0,j=0;i<m&&j<n;) |
44 | { |
45 | if (A.elem[i]>B.elem[j])C.elem[k++]=B.elem[j++]; |
46 | else C.elem[k++]=A.elem[i++]; |
47 | } |
48 | while (i<m) |
49 | { |
50 | C.elem[k++]=A.elem[i++]; |
51 | } |
52 | while (j<n) |
53 | { |
54 | C.elem[k++]=B.elem[j++]; |
55 | } |
56 | C.len=m+n; |
57 | return 0; |
58 | } |
59 | int Output(nodeL) |
60 | { |
61 | int i; |
62 | for (i=0;i<m+n;i++) |
63 | { |
64 | if (i==m+n-1) printf ( "%d\n" ,L.elem[i]); |
65 | else printf ( "%d" ,L.elem[i]); |
66 | } |
67 | return 0; |
68 | } |
69 | int main() |
70 | { |
71 | scanf ( "%d%d" ,&m,&n); |
72 | Init1(A); |
73 | Creat(A,m); |
74 | Init1(B); |
75 | Creat(B,n); |
76 | Merge(A,B,C); |
77 | Output(C); |
78 | return 0; |
79 | } |
相关文章推荐
- 一步一步实现自定义控件(二)
- mysql5.7 upgrade issue GROUP BY incompatible with sql_mode=only_full_group_by
- nova基于ubs机制扩展scheduler-filter
- C++内存分配方式
- Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level(转)
- 1022 D进制的A+B
- 看,这个工具栏能伸缩折叠——Android CollapsingToolbarLayout使用介绍
- Android编译Release版本
- 被搞得晕头转向的LPSTR、LPWSTR、LPCSTR、LPCWSTR、LPTSTR、LPCTSTR
- Hadoop 集群监控
- 浅尝Windows Server 2016——Container 容器:部署
- 【OpenGL】直线生成算法DDA+Bresenham
- Android面试之Java引用类型简答
- 自定义dialog
- 黑马Android76期从入门到就业班视频教程下载
- CodeForces 653A【水】
- Linux内核调试方法总结
- c/c++练习–03
- MFC中创建多线程
- 原型模式