(1)创建递增排列的单链表A、B;
(2)输出单链表A、B;
(3)实现A、B链表的并集C并输出。
供参考:
void MergeList(LNode*& La, LNode*& Lb, LNode*& Lc)
{ //升序链表La和Lb并集得升序链表LC,最终 La Lc 都指向得到并集链表。
LNode* pa, * pb, * pc, * pt;
pa = La->next;
pb = Lb->next;
La->next = NULL;
Lc = pc = La;
while (pa && pb)
{
if (pa->data < pb->data)
{
pc->next = pa;
pc = pa;
pa = pa->next;
}
else if (pa->data > pb->data) {
pc->next = pb;
pc = pb;
pb = pb->next;
}
else {
pc->next = pa;
pc = pa;
pa = pa->next;
pt = pb;
pb = pb->next;
free(pt);
}
}
pc->next = pa ? pa : pb;
free(Lb);
Lb = NULL;
}
C++ 支持多继承,即一个派生类可以有两个或多个基类。语法如下:
class C: public A, public B{
//类C新增加的成员
}
在派生类中对基类成员的访问应该是唯一的。但是,在多继承情况下,可能造成对基类中某个成员的访问出现了不唯一的情况,这时就称对基类成员的访问产生了二义性,也称作命名冲突。
解决方法是,通过作用域运算符(::)明确指出访问的是基类 A 的变量 a,还是基类 B 的变量 a。可以在使用时候指明 A::a 还是 B::a,也可以直接在类中用该运算符直接定义同名成员。
.