雙向鏈表插入節點
1、根據實例分析
2、把節點之間的關系看成 是邊的拆除和重建
3、為了方便敘述,給邊標了號
如圖所示是我們要操作的結構體和在雙向鏈表的圖。
現在我們的目的就是在ab節點之間插入x節點。
現在我把這六條線都遍上號:
在插入之前,2,6這兩條邊是存在的,這兩條邊就是:
在插入之后,2,6這兩條邊不存在了,存在的邊為4,1,3,5,這四條邊就是:
所以要想實現在a,b節點中插入x節點,也就是實現
。
在這個圖中,1和6是同一條邊,都是a->next,3和2是同一條邊,都是b->pre.
現在我們是通過p指針在這個雙休鏈表中找到了b節點,也就是p==b的,並且我們有一個x節點是待插入的。
在這種情況下,我們找a節點就只能通過p節點,p->pre就代表a。
顯然2這條邊就是p->pre,所以我們要想找到a節點,就必須有2這條邊。
而1,4兩條邊的操作都和a節點有關。
所以我們要想操作1,4兩條邊,就必須有a節點,也就是2這條邊。
5這條邊的插入順序很自由,因為我們的x節點和p節點都是已知的。
所以我們的一個插入順序為這樣:
1、先拆第6條邊,接上第一條邊:
2、然后接上第4條邊:
3、然后接上第5條邊:
4、最后拆除第二條邊接上第三條邊:
大工告成。
說一句,這個循序不是唯一的,比如說5這條邊我可以在任意時候插入。
並且如果p節點現在不是指向b,而是指向a,那么一切又都變化了,所以重在理解吧。