解
// 在A中刪除既在B中出現又在C中出現的元素
Status ListUnion_Sq(SqList &D
{
SqList Temp;
InitList_Sq(Temp);
ListCross_L(B
ListMinus_L(A
}
解
// 在A中刪除既在B中出現又在C中出現的元素
Status ListUnion_L(LinkList &A
{
ListCross_L(B
ListMinus_L(A
}
// 求集合A
Status ListMinus_L(LinkList &A
{
LinkList pa
pa=A;
pb=B;
qa=pa;// 保存pa的前驅指針
qb=pb;// 保存pb的前驅指針
pa=pa
pb=pb
while(pa&&pb){
if(pb
pt=pb;
pb=pb
qb
free(pt);
}
else
if(pb
qa=pa;
pa=pa
}
else{
pt=pa;
pa=pa
qa
free(pt);
}
}
while(pb){
pt=pb;
pb=pb
qb
free(pt);
}
pb=B;
free(pb);
return OK;
}
解
// 在單循環鏈表S中刪除S的前驅結點
Status ListDelete_CL(LinkList &S)
{
LinkList p
if(S==S
q=S;
p=S
while(p
q=p;
p=p
}
q
free(p);
return OK;
}
[
From:http://tw.wingwit.com/Article/program/sjjg/201311/23386.html