主题:求助:C++题 将两个有序整型单链表合并为一个有序单链表
smiledream
[专家分:0] 发布于 2008-03-26 09:59:00
求助:C++题 将两个有序整型单链表合并为一个有序单链表
谁能写个这个题的代码啊,很着急~~~谢谢了~~~
回复列表 (共1个回复)
沙发
天之痕99 [专家分:40] 发布于 2008-03-27 17:32:00
PListlink merge(PListlink La,PListlink Lb)
{
assert(La && Lb);
//取小者为表头
PListlink h, t;
if (La->data <= Lb->data)
{
h = La; t = Lb;
}
else
{
h = Lb; t = La;
}
PListlink p = h;
PListlink pp = p->next;
while (p->next)
{
//找到比另一个表头元素大的节点,交换表头,指向较小元素
if (pp->data < t->data)
{
p = p->next;
pp = p->next;
}
if (pp->data > t->data)
{
p->next = t;
t = pp;
pp = p->next;
}
//删除重复节点
while (p->data == pp->data || pp->data == t->data)
{
p->next = pp->next;
delete pp;
if (p->next == NULL)
{
//一个链表消耗完毕,将另一个表接到其尾部返回
p->next = t;
return h;
}
pp = p->next;
}
}
return h;
}
我来回复