struct rt_list_node
;typedef
struct rt_list_node rt_list_t;
第一步、看的時候主要是看原來的圖
l->next 就是node2, 因為要新插入乙個, node2往後退
所以l->next->prev 就指向新插入的節點。
(node2的前乙個是n)
第二步、原來的時候,l->next指的就是node2.
但是因為新插入乙個,n節點取代了node2的位置,所以,為了連上2這條線,應該由n->next來指向
node 2。
(n的下乙個是node2) 然後node2怎麼表示呢?node2得看原來的指向
l->next就是node2
第三步(l的下乙個是n)
第四步(n的前乙個是l)
問題是noden,在函式中我們是不能表述的,那麼怎麼辦呢?
沒錯,在原來的鍊錶中l->prev就是noden
第一步l->prev->next 可以表示為 noden的下乙個為n
第二步n->prev = l->prev 等價於 n—>prev =noden 即 n的上乙個為noden
問題是 在函式形參裡面,只有刪除的節點的n 的引數
所以得用n節點來表示node1,
怎麼表示呢?
n->prev 就是指 node1 。
所以 (nodel 的下乙個node3)用**表示
n->prev->next = n->next
其餘同理。
RT Thread 雙向鍊錶分析
從鍊錶刪除節點函式 rt list remove 鍊錶節點元素訪問 雙向鍊錶也叫雙鏈表,是鍊錶的一種,是在作業系統中常用的資料結構,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅,其頭指標 head 是唯一確定的。所以,從雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼...
rt thread隨筆4補充 雙向鍊錶
typedef struct dnode dnode,doublelist 1 struct rt list node 2 6typedef struct rt list node rt list t rt list t 型別的節點裡面有兩個 rt list t 型別的節點指標 next 和 pre...
鍊錶之雙向鍊錶
首先在說下單鏈表,才能和雙鏈表作比較 單鏈表 單向鍊錶 由兩部分組成 資料域 data 和結點域 node 單鏈表就像是一條打了很多結的繩子,每乙個繩結相當於乙個結點,每個節結點間都有繩子連線,這樣原理的實現是通過node結點區的頭指標head實現的,每個結點都有乙個指標,每個節點指標的指向都是指向...