题目描述
已知两非递减的顺序线性表,要求合并成一个新的非递减顺序线性表。(测试数据为整型)
输入
输入包含四行,第一行为自然数n,表示第一个非递减顺序线性表的长度; 第二行为n个自然数构成的非递减顺序线性表; 第三行为自然数m,表示第二个非递减顺序线性表的长度; 第四行为m个自然数构成的非递减顺序线性表。输出
输出:用一行输出合并后的非递减顺序线性表,各数之间用一个空格隔开。样例输入
2 1 3 3 2 3 6样例输出
1 2 3 3 6#include<iostream> #include<malloc.h> #include<cstring> using namespace std; #define INF 0x3f3f3f3f #define MAX(x,y) (x>y?x:y) #define MIN(x,y) (x>y?y:x) #define M 1000 typedef struct { int data[M]; int length; }sqlist; void Initsqlist(sqlist*&L) { L = (sqlist*)malloc(sizeof(sqlist)); L->length=0; } void createsqlist(sqlist*&L) { int n; cin>>n; for(int i=0;i<n;i++) { cin>>L->data[i]; } L->length=n; } void sortsqlist(sqlist*&L1,sqlist*&L2,sqlist*&L3) { int i=0,j=0,k=0; while(i<L1->length&&j<L2->length) { if(L1->data[i]>L2->data[j]) { L3->data[k]=L2->data[j]; k++; j++; } else { L3->data[k]=L1->data[i]; k++; i++; } } while(i<L1->length) { L3->data[k]=L1->data[i]; k++; i++; } while(j<L2->length) { L3->data[k]=L2->data[j]; k++; j++; } for(i=0;i<k;i++) { cout<<L3->data[i]<<" "; } } int main() { sqlist*L1,*L2,*L3; Initsqlist(L1); createsqlist(L1); Initsqlist(L2); createsqlist(L2); Initsqlist(L3); sortsqlist(L1,L2,L3); return 0; }
SWUST OJ941: 有序顺序表的合并操作的实现
最新推荐文章于 2024-03-29 14:11:30 发布