北航 2010年考研复试题2

2.归并两个有序字符串,要求输出不能有重复字符(数据结构上做过N遍的Merge函数)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Merge(char *a,char *b)
{
    int l1=strlen(a);
    int l2=strlen(b);
    char *c=(char *)malloc((l1+l2+1)*sizeof(char));
    int i=0,j=0,k=0;
    for(;i<l1 && j<l2;)
    {
        if(a[i]<b[j])
        {
            c[k++]=a[i];
            i++;
        }
        else if(a[i]==b[j])
        {
            c[k++]=a[i];
            i++;
            j++;
        }
        else
        {
            c[k++]=b[j];
            j++;
        }
    }
    
    if(i==l1 && j<l2)
    {
        for(;j<l2;j++)
            c[k++]=b[j];
    }
    else if(i<l1 && j==l2)
    {
        for(;i<l1;i++)
            c[k++]=a[i];
    }
    else;
    c[k]='