目標:掌握雙鏈表的資料結構
來看看什麼是雙鏈表吧
雙鏈表與單鏈表的區別,單鏈表是單項的、而雙鏈表是有左右的
題目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一樣的指標指向前驅結點不就好了嗎!確實如此,這樣每個結點都有兩個指標域,分別指向前驅結點和後繼結點...