Rt Thread之雙向鍊錶學習

2021-10-18 07:47:34 字數 1042 閱讀 8056

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實現的,每個結點都有乙個指標,每個節點指標的指向都是指向...