請幫我調試一下這個代碼交換雙節點的雙鏈表嗎?我無法找出什麼我做錯了:(調試幫助 - 交換雙節點的雙鏈表
這裏是代碼:
dll* swap_node(dll *head , dll *node1 , dll *node2) {
dll *tmp;
int flag=0;
if(node1->prev!=NULL) {
node1->prev->next=node2;
} else {
flag=1;
}
if(node1->next!=NULL) {
node1->next->prev=node2;
}
if(node2->prev!=NULL) {
node2->prev->next=node1;
}
if(node2->next!=NULL) {
node2->next->prev=node1;
}
tmp=node1->next;
node1->next=node2->next;
node2->next=tmp;
tmp=node1->prev;
node1->prev=node2->prev;
node2->prev=tmp;
if(flag==1) {
head=node2;
}
return head;
}
在此先感謝
如果節點1和節點彼此相鄰怎麼辦?即:node1-> next == node2 && node2-> prev == node1。這種情況下的指針會發生什麼? – Sjoerd