swust-oj 941 有序顺序表的合并操作的实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Wutongyewan/article/details/79965796

有序顺序表的合并操作的实现
1000(ms)
10000(kb)
2614 / 13893
已知两非递减的顺序线性表,要求合并成一个新的非递减顺序线性表。(测试数据为整型)

输入

输入包含四行,第一行为自然数n,表示第一个非递减顺序线性表的长度;
第二行为n个自然数构成的非递减顺序线性表;
第三行为自然数m,表示第二个非递减顺序线性表的长度;
第四行为m个自然数构成的非递减顺序线性表。

输出

输出:用一行输出合并后的非递减顺序线性表,各数之间用一个空格隔开。

样例输入

2
1 3
3
2 3 6

样例输出

1 2 3 3 6 

吐舌头AC:

 

#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
typedef struct Sqlist
{
 int data[MaxSize];
 int length;
}Sqlist;
//初始化顺序表
void initList(Sqlist *&L){
 L=(Sqlist *)malloc(sizeof(Sqlist));
 L->length=0;
}
//创建顺序表
void creatList(Sqlist *&L){
 int n,i,e;
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
  scanf("%d",&e);
  L->data[i]=e;
  L->length++;
 }
}
//非递减插入排序
void mergeList(Sqlist *&L1,Sqlist *&L2,Sqlist *&L3)
{
 initList(L3);
 int i=0,j=0;
 while(i<L1->length&&j<L2->length)
 {
  if(L1->data[i]<L2->data[j])
   L3->data[L3->length++]=L1->data[i++];
  else
   L3->data[L3->length++]=L2->data[j++];
 }
 while(i<L1->length)
  L3->data[L3->length++]=L1->data[i++];
 while(j<L2->length)
  L3->data[L3->length++]=L2->data[j++];
}
//输出顺序表
void display(Sqlist *&L)
{
 int i=0;
 while(i<L->length)
  printf("%d ",L->data[i++]);
}
int main()
{
 Sqlist *L1,*L2,*L3;
 initList(L1);
 creatList(L1);
 initList(L2);
 creatList(L2);
 mergeList(L1,L2,L3);
 display(L3);
 return 0;
}


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页