数据结构题-顺序表:
将俩有序顺序表合并为一个新的有序顺序表,并返回结果
输入:
3 3
1 2 3 4 5 6
输出
1 2 3 4 5 6
输入:
3 3
3 3 4 4 5 5
输出:
3 4 5
思路:
简单比较两个数组大小,
由于有序,
1.如果结果数组当前存储和a数组或者b数组当前存储重复,就跳过, 2.如果没有重复,就把小的那个存入。
注意:
注意相等情况的处理
,不要遗漏
c语言代码:
#include <stdio.h>
#include <stdlib.h>
int main(){
int a_len=0;
int b_len=0;
int a[50];
int b[50];
scanf("%d",&a_len);
scanf("%d",&b_len);
int i=0;
for(i=0;i<a_len;i++){
scanf("%d",&a[i]);
}
for(i=0;i<b_len;i++){
scanf("%d",&b[i]);
}
i=0;int j=0;int k=0;int c[100];
c[0]=a[0];
while(i!=a_len || j!=b_len){
if (c[k]==b[j])
{
j++;
continue;
}
if(c[k]==a[i])
{
i++;
continue;
}
if(a[i]<=b[j]&&c[k]!=a[i]){
k++;
//printf("a[i]:%d\n",a[i]);
c[k]=a[i];
i++;
}
else if(a[i]>b[j]&&c[k]!=b[j])
{
k++;
//printf("b[j]:%d\n",b[j]);
c[k]=b[j];
j++;
}
}
for (i = 0; i < k+1; i++)
{
printf("%d",c[i]);
}
}
结果示意: