資料結構 雙鏈表

2021-10-06 10:38:39 字數 783 閱讀 9589

目標:掌握雙鏈表的資料結構

來看看什麼是雙鏈表吧

雙鏈表與單鏈表的區別,單鏈表是單項的、而雙鏈表是有左右的

題目acwing 827

實現乙個雙鏈表,雙鏈表初始為空,支援5種操作:

(1) 在最左側插入乙個數;

(2) 在最右側插入乙個數;

(3) 將第k個插入的數刪除;

(4) 在第k個插入的數左側插入乙個數;

(5) 在第k個插入的數右側插入乙個數

現在要對該鍊錶進行m次操作,進行完所有操作後,從左到右輸出整個鍊錶。

注意:題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的時間順序,這n個數依次為:第1個插入的數,第2個插入的數,…第n個插入的數

//一樣,下邊k 右邊插入

void

add(

int k,

int val)

//左邊插入

add(l[k]

,x);

//刪除

//刪除第k個點

void

remove

(int k)

資料結構 雙鏈表

typedef struct nodenode 雙鏈表的根節點的bwd指標指向雙鏈表的最後乙個節點,fwd指標指向雙鏈表的第乙個節點,雙鏈表的value欄位為空 以下程式是將乙個值插入到乙個有序的雙鏈表中,如果鍊錶中已經有和該值相同的節點則不插入 include include typedef st...

資料結構 雙鏈表

單鏈表結點中只有乙個只指向後繼的指標,使得單鏈表只能從頭結點開始一次順序的先後遍歷。要訪問某個結點的前驅結點 插入刪除操作時 只能從頭開始遍歷,訪問後繼節點的時間複雜度為o 1 訪問前驅結點的時間複雜度為o n 為了克服單鏈表的上述缺點,引入了雙鏈表,雙鏈表結點中有兩個指標prior 和 next,...

資料結構 雙鏈表

概念 在使用乙個單鏈表時,我們可以通過next指標很輕鬆地訪問下乙個結點,但是如果想要找到乙個結點的前驅結點卻沒有什麼好的辦法,只能從頭開始遍歷。既然我們想要很輕鬆地訪問前驅結點,那麼定義乙個像next一樣的指標指向前驅結點不就好了嗎!確實如此,這樣每個結點都有兩個指標域,分別指向前驅結點和後繼結點...