已知两非递减的顺序线性表,要求合并成一个新的非递减顺序线性表。(测试数据为整型)
输入
输入包含四行,第一行为自然数n,表示第一个非递减顺序线性表的长度; 第二行为n个自然数构成的非递减顺序线性表; 第三行为自然数m,表示第二个非递减顺序线性表的长度; 第四行为m个自然数构成的非递减顺序线性表。
输出
输出:用一行输出合并后的非递减顺序线性表,各数之间用一个空格隔开。
样例输入
2 3 6
样例输出
1 2 3 3 6
#include<iostream> #include <stdlib.h> using namespace std; typedef struct { int data[100]; int length; }List; void init(List *&L)//初始化 { L = (List*)malloc(sizeof(List)); L->length = 0; } void add(List *&L,int a[],int length)//添加元素 { for(int i=0;i<length;i++) { L->data[i] = a[i]; } L->length = length; } void combine(List *&L1,List *&L2,List*&L3)//合并后排序 { for(int i=0;i<L1->length;i++) { L3->data[L3->length++] = L1->data[i]; } for(int i=0;i<L2->length;i++) { L3->data[L3->length++] =L2->data[i]; } for(int i=0;i<L3->length;i++) { for(int j=i;j<L3->length;j++) { if(L3->data[i]>L3->data[j]) { int temp = L3->data[i]; L3->data[i] = L3->data[j]; L3->data[j]= temp; } } } } int main() { int n; cin>>n; int a[n]; for(int i=0;i<n;i++) { cin>>a[i]; } int m; cin>>m; int b[m]; for(int i=0;i<m;i++) { cin>>b[i]; } List *L1,*L2,*L3; init(L1); init(L2); init(L3); add(L1, a, n); add(L2, b, m); combine(L1, L2, L3); for(int i=0;i<L3->length;i++) { cout<<L3->data[i]<<" "; } return 0; } 文章来源: 有序顺序表的合并操作的实现