a⊕(a⊕b)=(a⊕a)⊕b=b
(a⊕b)⊕b=a⊕(b⊕b)=a
則可利用一個指針域來實現雙向鏈表L
解
Status TraversingLinkList(XorLinkedList &L
{
XorPointer p
if(d==
p=L
left=NULL;
while(p!=NULL){
VisitingData(p
left=p;
p=XorP(left
}
}
else
if(d==
p=L
right=NULL;
while(p!=NULL){
VisitingData(p
right=p;
p=XorP(p
}
}
else return ERROR;
return OK;
}
解
DuLinkList ListLocate_DuL(DuLinkList &L
{
DuLinkList p
p=L
while(p!=L && p
if(p==L) return NULL;
else{
p
// 刪除結點
p
p
// 插入到合適的位置
q=L
while(q!=L && q
if(q==L){
p
q
p
q
}
else{
// 在q之前插入
p
q
p
q
}
return p;
}
}
解
Status PolyDifferential(LinkedPoly &L)
{
LinkedPoly p
q=L;
p=L
while(p!=L){
if(p
pt=p;
p=p
q
free(pt);
}
else{
p
p
q=p;
p=p
}
}
return OK;
}
解
// 將單鏈表L劃分成
Status ListDivideInto
{
LinkedPoly p
q=L;
p=L
p
while(p!=L){
if(p
pt=p;
p=p
q
pt
p
p
}
else{
q=p;
p=p
}
}
return OK;
}
[
From:http://tw.wingwit.com/Article/program/sjjg/201311/23388.html