雙向鍊錶結構實現

2021-10-03 22:06:42 字數 2334 閱讀 4723

雙向鍊錶:

雙向鍊錶是可以正向遍歷鍊錶節點和反向遍歷鍊錶節點的一種鍊錶資料結構。在單向鍊錶中,每個節點只有乙個指向下乙個節點的引用,在雙向鍊錶中節點新增乙個指向前乙個節點的引用,新增相應的反向遍歷方法,即可實現訪問前乙個節點的。

新增和刪除節點時需要解決四個指向(引用)操作,相對來說更複雜,但是解決好在邊界處鍊錶頭部和尾部節點的新增和刪除操作後,編碼變得相對容易。

**實現:

package algorithms.model;

public

class

doublylinklist

@suppresswarnings

("hiding"

)class

link

public

void

showcurrentnode()

}public

boolean

isempty()

//處理好每個節點的前後指向是關鍵;先處理哪個節點的哪個指向問題;

public

void

addfirst

(t value)

first = newlink;

= null;

}public

void

addlast

(t value)

last = newlink;

= null;

}//先考慮普遍性,再考慮特殊性;在找到的第乙個key前面插入

public

boolean

addbefore

(t key, t value)

else

}//斷開連線後保證斷開前指向的連線還能獲取到;

link

newlink =

newlink

(value)

; cur.pre.next = newlink;

newlink.pre = cur.pre;

newlink.next = cur;

cur.pre = newlink;

return

true;}

public

boolean

addafter

(t key, t value)

link

newlink =

newlink

(value)

; cur.next.pre = newlink;

newlink.next = cur.next;

cur.next = newlink;

newlink.pre = cur;

return

true;}

public

void

deletefirst()

public

void

deletelast()

public link

deletekey

(t key)

if(cur == first)

first = first.next;

//保證first引用的指向正確;

else

cur.pre.next = cur.next;

if(cur == last)

last = last.pre;

//保證last引用的指向正確;

else

cur.next.pre = cur.pre;

return cur;

}public t showpre

(t value)

return cur.val;

}public

void

showforward()

system.out.

println()

;}public

void

showbackward()

system.out.

println()

;}public

static

void

main

(string[

] args)

}

輸出:

543

2167

8998

7612

3455

null43

2167

8943

2167

8432

6784

32611

7843

212611

78

mysql儲存結構雙向鍊錶 PHP實現雙向鍊錶 棧

這次再來分享一下實現雙向鍊錶和棧的實現。雖然是以前寫的了,但是發現php寫的這些 很容易看懂!雙向鍊錶 classhero elseelse if cur next no hero no cur cur next if i ist hero pre cur if cur next null cur ...

java手工實現雙向鍊錶結構

1.對於鍊錶結構,主要有單向鍊錶和雙向鍊錶之分,這裡討論的是雙向鍊錶,即節點中有兩個應用,left引用指向前乙個節點,right引用指向後面乙個節點。下面是乙個簡單的鍊錶 2.實現鍊錶節點結構 package com.lwk.linked author 李衛康 類說明 鍊錶結構 單行和雙向 publ...

雙向鍊錶實現

template class link link link pre null,link ne null void operator new size t void operator delete void ptr template link link freelist null template v...