顺序表应用5:有序顺序表归并
来源:互联网 发布:一元夺宝走势软件 编辑:程序博客网 时间:2024/06/07 13:57
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 31 3 5 6 92 4 10
Example Output
1 2 3 4 5 6 9 10
Hint
Author
#include <stdio.h>
#include <stdlib.h>
#define Max 20100
using namespace std;
typedef int elemtype;
int len;
typedef struct
{
elemtype *elem;
int listsize;
int length;
}List;
void creat(List &L, int len)
{
L.elem = new elemtype[Max];
L.length = len;
L.listsize = Max;
}
void output(List &L)
{
int i;
for(i = 0; i < L.length - 1; i++)
{
printf("%d ", L.elem[i]);
}
printf("%d\n", L.elem[L.length - 1]);
}
void input(List &L)
{
int i;
for(i = 0; i < L.length; i++)
{
scanf("%d", &L.elem[i]);
}
}
void combine(List &L1, List &L2, List &L)
{
int i = 0, j = 0, k = 0;
while(i < L1.length && j < L2.length)
{
if(L1.elem[i] >= L2.elem[j])
{
L.elem[k] = L2.elem[j];
k++;j++;
}
else
{
L.elem[k] = L1.elem[i];
k++;i++;
}
}
while(i < L1.length)
{
L.elem[k]=L1.elem[i];
k++;
i++;
}
while(j < L2.length)
{
L.elem[k]=L2.elem[j];
k++;
j++;
}
}
int main()
{
List L1, L2, L;
int m, n;
scanf("%d %d", &m, &n);
creat(L1, m);
input(L1);
creat(L2, n);
input(L2);
creat(L, m + n);
combine(L1, L2, L);
output(L);
return 0;
}
#include <stdlib.h>
#define Max 20100
using namespace std;
typedef int elemtype;
int len;
typedef struct
{
elemtype *elem;
int listsize;
int length;
}List;
void creat(List &L, int len)
{
L.elem = new elemtype[Max];
L.length = len;
L.listsize = Max;
}
void output(List &L)
{
int i;
for(i = 0; i < L.length - 1; i++)
{
printf("%d ", L.elem[i]);
}
printf("%d\n", L.elem[L.length - 1]);
}
void input(List &L)
{
int i;
for(i = 0; i < L.length; i++)
{
scanf("%d", &L.elem[i]);
}
}
void combine(List &L1, List &L2, List &L)
{
int i = 0, j = 0, k = 0;
while(i < L1.length && j < L2.length)
{
if(L1.elem[i] >= L2.elem[j])
{
L.elem[k] = L2.elem[j];
k++;j++;
}
else
{
L.elem[k] = L1.elem[i];
k++;i++;
}
}
while(i < L1.length)
{
L.elem[k]=L1.elem[i];
k++;
i++;
}
while(j < L2.length)
{
L.elem[k]=L2.elem[j];
k++;
j++;
}
}
int main()
{
List L1, L2, L;
int m, n;
scanf("%d %d", &m, &n);
creat(L1, m);
input(L1);
creat(L2, n);
input(L2);
creat(L, m + n);
combine(L1, L2, L);
output(L);
return 0;
}
阅读全文
0 0
- 顺序表应用 有序顺序表 归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 【3329】顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- sdut oj3329 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- 顺序表应用5:有序顺序表归并
- SDUT3329顺序表应用5:有序顺序表归并
- linux下简单的mail使用
- 读深入理解Java虚拟机-4
- HashMap的遍历以及常用指令-备忘录
- 进程及系统服务控制
- 循环队列
- 顺序表应用5:有序顺序表归并
- CorelDRAW 画MM想有多美的就有多细致的操作
- 自然语言处理
- 写sql语句统计各个学生各科成绩(case when用法)
- Markdown的基本操作备忘录
- 每日区块链:智能合约是否是区块链的最佳创新?
- 【学习笔记】初学者对于JavaScript中的闭包的一些理解
- C语言——数字河
- c#怎样根据文件名获取其所在的绝对路径