主题:[原创]【C语言数据结构编程】顺序表合并
将两顺序升序顺序表合并,合并后还按升序排列,相同元素只保留一个。
以下是本人写的算法,求高手改进。
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++;
}
}
以下是本人写的算法,求高手改进。
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++;
}
}