不帶頭雙向鍊錶刪除指定元素

2021-09-26 09:12:53 字數 975 閱讀 8766

1、remove(key)

對於remove(key),只需要刪除第一次找到的元素,然後返回即可。

要刪除指定元素,先要判斷鍊錶是否為空,如果鍊錶為空,就不存在刪除指定元素;如果不為空,接下來再判斷要刪除的元素是否是其頭部。如果是其頭部,將其頭部後移,並將頭的prev置為null;結構圖如下:

如果不是頭部,再向後找指定元素,如果要刪除的結點是中間結點,結構圖如下:

如果刪除的是尾節點,又是另外一種情況

在上面的這三種情況中,刪除頭節點和尾節點需要特殊考慮一下

程式如下:

public int remove(int key) throws interruptedexception 

node cur=this.head;

int olddata=0;

while(cur!=null)else else

olddata=cur.data;

}return olddata;

}cur=cur.next;

}return -1;

}

測試:

public class testdouble 

}

結果:

在這個刪除指定元素的程式中,裡面的頭插元素需要自己寫,display()列印所有元素的方法也需要自己寫

鍊錶 遞迴刪除不帶頭結點鍊錶所有x元素

王道p37 t1 設計乙個遞迴演算法,刪除不帶頭結點的單鏈表l中所有值為x的結點。王道上的答案絕對是錯的,我自己想了乙個 函式主體 linklist del x linklist prior,linklist l,int x else if l data x 呼叫方法 l del x null,l,...

不帶頭結點的雙向迴圈鍊錶

基本概念 迴圈鍊錶 將單鏈表中最後乙個結點的next指向頭結點或者空指標,就使得整個單鏈表形成乙個環,這種頭尾相接的單鏈表稱為單迴圈鍊錶,簡稱迴圈鍊錶。雙向鍊錶 是在單鏈表的每個結點中,再設定乙個指向其前驅結點的指標域prior,在雙向鍊錶的結點中有兩個指標域,乙個next指向直接後繼,乙個prio...

不帶頭節點鍊錶

在本人之前的博文 帶頭節點的鍊錶 宿舍管理系統 中,本人介紹了鍊錶的基本知識點。那麼,在本人資料結構與演算法的專欄的開始,本人就來介紹下不帶頭節點鍊錶 由於本人在講解帶頭節點鍊錶的時候就已經講解過了鍊錶基本的增 刪 改 查 操作,所以,本人在這裡就不對這些重複的知識點進行講解了。本人在本篇博文中主要...