有序顺序表的合并操作的实现

匿名 (未验证) 提交于 2019-12-03 00:34:01
已知两非递减的顺序线性表,要求合并成一个新的非递减顺序线性表。(测试数据为整型)

输入

输入包含四行,第一行为自然数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; } 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!