将两顺序升序顺序表合并,合并后还按升序排列,相同元素只保留一个。
以下是本人写的算法,求高手改进。
void mergelist(sqlist &L1,sqlist L2)
{
    int *p,*q,*s;
    p=L1.elem;
    q=L2.elem;   
    while((q<&(L2.elem[L2.length]))&&(p<&(L1.elem[L1.length])))
    {
        if(*p==*q)
        {   ++q;   ++p;   }
        else if(*q<*p)
        {  
            s=&(L1.elem[L1.length]);
            while(p<s)
            {   *s=*(s-1);   s--;   }
           *p=*q;  ++p;  ++q;
           L1.length++;
        }
        else++p;
    }
    while((q<&(L2.elem[L2.length]))&&(p=&(L1.elem[L1.length])))
    {
        *p=*q;
        ++p;
        ++q;
        L1.length++;
    }
}