資料結構 雙向鍊錶 1

2021-10-07 16:03:01 字數 4285 閱讀 5798

刪除雙向鍊錶與單向鍊錶大同小異,只不過雙向鍊錶還有個節點指向最後乙個節點

新建工程,結構如下

;}測試1:本身沒有節點,使用setfirstnode

@test

void

testsetfirstnode1()

結果

測試1:本身沒有節點,使用addnode

@test

void

testaddnode1()

結果

修改mylist

public string queryall()

stringbuilder.

deletecharat(1

);stringbuilder.

deletecharat(1

);stringbuilder.

('}');

return stringbuilder.

tostring()

;}

測試3:使用addnode新增第乙個節點,setfirstnode替換掉

@test

void

testaddandsetfirst()

結果

測試4:使用setfirstnode設定第乙個節點,addnode新增節點

@test

void

testsetfirstandadd()

結果

測試5 使用addnode新增第乙個節點,setlastnode替換最後乙個節點

@test

void

testaddandsetlast()

結果

測試6:使用setfirstnode新增第乙個節點,setlastnode替換最後乙個節點

@test

void

testsetfirstandsetlast()

結果

測試7:有兩個節點,setlastnode替換最後乙個節點

@test

void

testsetlast()

結果

測試8:當前沒有節點,使用setlastnode新增最後乙個節點

@test

void

testsetlasttnode1()

結果

測試9:當前有節點,使用setlastnode新增最後乙個節點

@test

void

testsetlasttnode2()

結果

同單向鍊錶一致,不適合做修改以及查詢操作,現在還是只刪除第乙個節點以及最後乙個節點。

public

void

deletefirstnode()

else

this

.size--;}

public

void

deletelastnode()

else

this

.size--

;}

測試1:沒有節點使用deletefirstnode

@test

void

testdeletefirstnode()

測試2:沒有節點使用deletelastnode

@test

void

testdeletelastnode()

測試3:有乙個節點使用deletefirstnode

@test

void

testdeletefirstnode2()

結果

測試4:有乙個節點使用deletelastnode

@test

void

testdeletelasttnode2()

結果

測試5:有兩個節點使用deletefirstnode

@test

void

testdeletefirstnode3()

結果

測試6:有兩個節點使用deletelastnode

@test

void

testdeletelasttnode3()

結果

資料結構 鍊錶 雙向鍊錶

注意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 ...