数据结构

位置:IT落伍者 >> 数据结构 >> 浏览文章

数据结构与算法线性表复习习题【5】[3]


发布日期:2018年05月16日
 
数据结构与算法线性表复习习题【5】[3]
题的条件作以下两点修改对单链表重新编写求得表C的算法

() 假设在同一表(A或B)中可能存在值相同的元素但要求新生成的表C中的元素值各不相同

() 利用原表(A表或B表)中的结点构成表C并释放A表中的无用结点空间

()

// AB求交结果放在C表中并删除相同元素

Status ListCrossDelSame_L(LinkList &ALinkList &BLinkList &C)

{

LinkList papbqaqbpt;

pa=A;

pb=B;

qa=pa;// 保存pa的前驱指针

qb=pb;// 保存pb的前驱指针

pa=pa>next;

pb=pb>next;

C=A;

while(pa&&pb){

if(pa>data<pb>data){

pt=pa;

pa=pa>next;

qa>next=pa;

free(pt);

}

else

if(pa>data>pb>data){

pt=pb;

pb=pb>next;

qb>next=pb;

free(pt);

}

else{

if(pa>data==qa>data){

pt=pa;

pa=pa>next;

qa>next=pa;

free(pt);

}

else{

qa=pa;

pa=pa>next;

}

}

}

while(pa){

pt=pa;

pa=pa>next;

qa>next=pa;

free(pt);

}

while(pb){

pt=pb;

pb=pb>next;

qb>next=pb;

free(pt);

}

pb=B;

free(pb);

return OK;

}

()

// AB求交结果放在A表中并删除相同元素

Status ListCrossDelSame_L(LinkList &ALinkList &B)

{

LinkList papbqaqbpt;

pa=A;

pb=B;

qa=pa;// 保存pa的前驱指针

qb=pb;// 保存pb的前驱指针

pa=pa>next;

pb=pb>next;

while(pa&&pb){

if(pa>data<pb>data){

pt=pa;

pa=pa>next;

qa>next=pa;

free(pt);

}

else

if(pa>data>pb>data){

pt=pb;

pb=pb>next;

qb>next=pb;

free(pt);

}

else{

if(pa>data==qa>data){

pt=pa;

pa=pa>next;

qa>next=pa;

free(pt);

}

else{

qa=pa;

pa=pa>next;

}

}

}

while(pa){

pt=pa;

pa=pa>next;

qa>next=pa;

free(pt);

}

while(pb){

pt=pb;

pb=pb>next;

qb>next=pb;

free(pt);

}

pb=B;

free(pb);

return OK;

}

[] [] []

               

上一篇:数据结构串之串及串的基本概念

下一篇:数据结构与算法线性表复习习题【5】[2]