C语言,数据结构,求网友解答

题目简述:两列已经按高矮顺序排好队的幼儿园小朋友要过斑马线,交警要求单列通过;编写C语言算法帮助实现目标,保持原高矮顺序不变。
相关提示:如果第一列高矮顺序:1 3 4 5 7 9,第二列高矮顺序:2 6 8 。则新列应输出:1 2 3 4 5 6 7 8 9。

数据结构要求用什么?数组还是链表?

数组的写法,供参考:

#include<stdio.h>
#define N 20
int main()
{
    int a[N],b[N],c[2*N],m,n,i,j,k;
 
    printf("请分别输入两组升序数列的长度:");
    scanf("%d %d",&m,&n);
 
    printf("请输入第一组 %d 个整数数据:",m);
    for(i=0;i<m;i++)
        scanf("%d",&a[i]);
 
    printf("请输入第二组 %d 个整数数据:",n);
    for(i=0;i<n;i++)
        scanf("%d",&b[i]);
 
    i = 0; j = 0; k = 0;
    while(i < m && j < n)
    {
        if(a[i] >= b[j])
           c[k++] = b[j++];
        else
           c[k++] = a[i++];
    }
    if(i == m)
    {
        while(k < m + n)
        {
            c[k++] = b[j++];
        }
    }
    if(j == n)
    {
        while(k < m + n)
        {
            c[k++] = a[i++];
        }
    }
    for(i=0;i < m+n;i++)
        printf("%4d",c[i]);
    return 0;
}

指针的写法:

#include<stdio.h>
int main()
{
    int a[6] = {1,3,4,5,7,9}, b[3] = {2,6,8}, c[9];
    int *pa = a, * pb=b, * pc=c;
    while (pa < a + 6 && pb < b + 3)
    {
        if (*pa <= *pb){
            *pc++ = *pa++;
        }
        else{
            *pc++ = *pb++;
        }
    }
    while (pa < a + 6) *pc++ = *pa++;
    while (pb < b + 3) *pc++ = *pb++;
    for (int i = 0; i < 9; i++)
            printf("%d ", c[i]);
    return 0;
}