2.29
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/94e765778df1bc81806a38736d36ec93.jpeg)
Status ListUnion(SqList &D,SqList &A,SqList &B,SqList &C)
{
SqList Temp;
InitList(Temp);
ListCross(B,C,Temp);
ListMinus(A,Temp,D);
}
2.30
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2cefa69a1b301b34001cba1037bdd709.jpeg)
Status ListUnion(LinkList &A,LinkList &B,LinkList &C)
{
ListCross(B,C);
ListMinus(A,B);
}
Status ListMinus(LinkList &A,LinkList &B)
{
LinkList pa,pb,qa,qb,pt;
pa=A;
pb=B;
qa=pa;
qb=pb;
pa=pa->next;
pb=pb->next;
while(pa&&pb){
if(pb->data<pa->data){
pt=pb;
pb=pb->next;
qb->next=pb;
free(pb);
}
else
if(pb->data>pa->data){
qa=pa;
pa=pa->next;
}
else{
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;
}
2.31
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/096aeec7370fd0dae04175352c0f497b.jpeg)
Status ListDelete(LinkList &S)
{
LinkList p,q;
if(S==S->next) return ERROR;
q=S;
p=S->next;
while(p->next!=S){
q=p;
p=p->next;
}
q->next=p->next;
free(p);
return OK;
}
2.32
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/884a5efbd75994ea0df26006bb18d0bd.jpeg)
Status InitList(DuLinkList &L)
{
L=(DuLinkList)malloc(sizeof(DuLNode));
if(!L) exit(OVERFLOW);
L->pre=NULL;
L->next=L;
return OK;
}
Status ListInsert(DuLinkList &L,ElemType e){
DuLinkList p;
p=(DuLinkList)malloc(sizeof(DuLNode));
if(!p) return ERROR;
p->data=e;
p->next=L->next;
L->next=p;
return OK;
}
Status ListCirToDu(DuList &L)
{
DuLinkList p,q;
q=L;
p=L->next;
while(p!=L){
p->pre=q;
q=p;
p=p->next;
}
if(p==L) p->pre=q;
return OK;
}
2.33
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0bcf351a5a5acc4b688e98d3a4598fc3.jpeg)
Status ListDivideInto3CL(LinkList &L,LinkList &S1,LinkList &S2,LinkList &S3)
{
LinkList p,q,pt1,pt2,pt3;
p=L->next;
pt1=s1;
pt2=s2;
pt3=s3;
while(p){
if(p->data>='0'&&p->data<='9'){
q=p;
p=p->next;
q->next=pt1->next;
pt1->next=q;
pt1=pt1->next;
}
else
if((p->data>='A'&&p->data<='Z')||(p->data>='a'&&p->data<='z')){
q=p;
p=p->data;
q->next=pt2->next;
pt2->next=q;
pt2=pt2->next;
}
else{
q=p;
p=p->next;
q->next=pt3->next;
pt3->next=q;
pt3=pt3->next;
}
}
q=L;
free(q);
return OK;
}