設計思想:盡可能的**重用,化大堆的鍊錶設計為單個鍊錶。
鍊錶的構造:如果需要構造某類物件的特定列表,則在其結構中定義乙個型別為list_head指標的成員,通過這個成員將這類物件連 接起來,形成所需列表,並通過通用鍊錶函式對其進行操作。其優點是只需編寫通用鍊錶函式,即可構造和操作不同物件的列表,而無需為每類物件的每種列表編寫 專用函式,實現了**的重用。如果想對某種型別建立鍊錶,就把乙個list_head型別的變數嵌入到該型別中,用list_head中的成員和相對應的 處理函式來對鍊錶進行遍歷。如果想得到相應的結構的指標,使用list_entry可以算出來。
深入淺出linux核心源**之雙向鍊錶list_head(上)
深入淺出linux核心源**之雙向鍊錶list_head(下)
單鏈表 雙鏈表
實現乙個單鏈表,鍊錶初始為空,支援三種操作 1 向煉表頭插入乙個數 2 刪除第k個插入的數後面的數 3 在第k個插入的數後插入乙個數 現在要對該鍊錶進行m次操作,進行完所有操作後,從頭到尾輸出整個鍊錶。注意 題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的...
單鏈表和雙鏈表
單鏈表 單鏈表只有乙個指向下一結點的指標,也就是只能next 雙鏈表 雙鏈表除了有乙個指向下一結點的指標外,還有乙個指向前一結點的指標,可以通過prev 快速找到前一結點,顧名思義,單鏈表只能單向讀取 為什麼市場上單鏈表的使用多餘雙鏈表呢?從儲存結構來看,每個雙鏈表的節點要比單鏈表的節點多乙個指標,...
單鏈表和雙鏈表
單鏈表 是乙個node,儲存當前物件,並指向下乙個next,插入在第一位node,next指向原來的first 單鏈表 只儲存第乙個node的引用,雙端鍊錶 儲存兩個node的引用,第乙個和最後乙個node,可以從第乙個插入,也可以從最後乙個插入,也可以從頭部和尾部刪除 鏈結點,相當於是車廂 pub...