(三)雙向鍊錶的初始化 插入和刪除

2021-08-08 16:17:39 字數 851 閱讀 4721

雙向鍊錶是在單鏈表的基礎上增加了指向直接前驅的指標,所以在雙向鍊錶中的每乙個節點都能很容易的找到他的前驅和後繼。雙向鍊錶經常和迴圈鍊錶一起使用,成為雙向迴圈鍊錶,他的尾指標的後繼指向頭結點,頭結點的前驅指向尾節點,構成乙個環的結果,這樣,就算在尾節點也能很容易的找到頭結點。

結構定義

typedef int  elemtype;

typedef struct dulnodedulnode,*dulinklist;

功能函式

//初始化

status initlink(dulinklist *l)

//尾插法

dulinklist createlinklistt(dulinklist l)

return l;

}void outputlinklist(dulinklist l)

}//雙向鍊錶第i個節點之間插入新的節點

dulinklist insertlinklist(dulinklist l,int i,elemtype e)

q = (dulinklist)malloc(sizeof(dulnode));

if(q)

return l;

}//刪除第i個節點

dulinklist deletelinklist(dulinklist l,int i)

p->next->prior = q;

q->next = p->next;

free(p);

return l;

}

main函式

int main()

鍊錶 三 雙向鍊錶

前兩篇部落格中介紹的鏈式儲存結構中只有乙個指示直接後繼的指標域。因此,從單鏈表中的某個結點出發,之能向後遍歷每個結點,所尋找這個結點的直接前驅只能向用頭結點出。而若在每個結點的指標域中再加入乙個指向當前結點直接前驅的指標,就可以克服以上問題。雙向鍊錶,帶頭節點,頭的前驅為null,尾的後繼為null...

鍊錶 三 雙向鍊錶

1.概念 雙向鍊錶 double linked list 的節點有兩個指標,乙個指向直接前驅,乙個指向直接後繼。2.優點 查詢直接前驅執行時間為o 1 單鏈表為o n 3.儲存結構 雙向鍊錶 typedef struct dulnodedulnode,dulinklist 4.簡單例項 includ...

鍊錶 三 雙向鍊錶

1.概念 雙向鍊錶 double linked list 的節點有兩個指標,乙個指向直接前驅,乙個指向直接後繼。2.優點 查詢直接前驅執行時間為o 1 單鏈表為o n 3.儲存結構 雙向鍊錶 typedef struct dulnodedulnode,dulinklist 4.簡單例項 includ...