資料結構 雙向鍊錶

2021-09-01 19:47:11 字數 945 閱讀 3561

1.之前接觸到的鍊錶都只有乙個指標,指向直接後繼,整個鍊錶

只能單方向從表頭訪問到表尾,這種結構的鍊錶統稱為 「單向鍊錶」或「單鏈表」。如果演算法中需要頻繁地找某結點的前趨結點,單鏈表的解決方式是遍歷整個鍊錶,增加演算法的時間複雜度

,影響整體效率。為了快速便捷地解決這類問題,在單向鍊錶的基礎上,給各個結點額外配備乙個指標變數,用於指向每個結點的直接前趨元素。這樣的鍊錶被稱為「雙向鍊錶」或者「雙鏈表」。

並且實現(1,2,3)中插入乙個結點 4,變成(1,4,2,3)操作:

**:

#include#include//結構體定義

typedef struct line line;

//結構體初始化

line * initline(line *head)

return head;

}//在雙向鍊錶中插入資料4,,變成(1,4,2,3)

line *insertline(line *head, int data, int add)

else

//判斷條件為真,說明插入位置為鍊錶尾

if (body->next == null)

else

}return head;

}//實現

void display(line *head) else

temp=temp->next;

}}int main()

資料結構 鍊錶 雙向鍊錶

注意typedef的定義結構,以及dinklist的資料型別 typedef struct dnode dnode,dinklist 注意插入第乙個結點時,prior指標的空指向問題 if l next null 若l後繼結點為空 則省略該步驟 l next prior p 基本 頭插法建立雙向鍊錶...

資料結構 雙向鍊錶

前幾天寫了乙個單向鍊錶,今天參考自己單向鍊錶改寫了乙個雙向非迴圈鍊錶,下面只討論雙向非迴圈鍊錶。雙向非迴圈鍊錶有如下特點 一 雙向鍊錶每個結點都有乙個前驅指標和後驅指標 當然頭結點和尾結點除外 二 雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。三 頭結點只有後驅指標沒有前驅...

資料結構 雙向鍊錶

單鏈表的單向性 只能從頭結點開始高效訪問鍊錶中的資料元素。單鏈表還存在另乙個缺陷 逆序訪問時候的效率極低。如下 linklistlist for int i 0 i 5 i for int i list.length 1 i 0 i 根據大o推算法可以得出乙個for迴圈的時間複雜度為o n get ...