解
// 建立一個空的循環鏈表
Status InitList_DL(DuLinkList &L)
{
L=(DuLinkList)malloc(sizeof(DuLNode));
if(!L) exit(OVERFLOW);
L
L
return OK;
}
// 向循環鏈表中插入一個結點
Status ListInsert_DL(DuLinkList &L
{
DuLinkList p;
p=(DuLinkList)malloc(sizeof(DuLNode));
if(!p) return ERROR;
p
p
L
return OK;
}
// 將單循環鏈表改成雙向鏈表
Status ListCirToDu(DuLinkList &L)
{
DuLinkList p
q=L;
p=L
while(p!=L){
p
q=p;
p=p
}
if(p==L) p
return OK;
}
解
// 將單鏈表L劃分成
Status ListDivideInto
{
LinkList p
p=L
pt
pt
pt
while(p){
if(p
q=p;
p=p
q
pt
pt
}
else
if((p
(p
q=p;
p=p
q
pt
pt
}
else{
q=p;
p=p
q
pt
pt
}
}
q=L;
free(q);
return OK;
}
在
typedefstructXorNode {
char data;
structXorNode *LRPtr;
} XorNode
typedestruct {//無頭結點的異或指針雙向鏈表
XorPointerLeft
} XorLinkedList;
XorPointer XorP(XorPointer p
// 指針異或函數XorP返回指針p和q的異或值
[
From:http://tw.wingwit.com/Article/program/sjjg/201311/23387.html