您的位置:首页 > 其它

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

2016-09-20 22:22 441 查看
4000

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

Time Limit: 100MSMemory Limit: 800KBSubmitStatistic

Problem 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
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: