雙向鍊錶:
雙向鍊錶是可以正向遍歷鍊錶節點和反向遍歷鍊錶節點的一種鍊錶資料結構。在單向鍊錶中,每個節點只有乙個指向下乙個節點的引用,在雙向鍊錶中節點新增乙個指向前乙個節點的引用,新增相應的反向遍歷方法,即可實現訪問前乙個節點的。
新增和刪除節點時需要解決四個指向(引用)操作,相對來說更複雜,但是解決好在邊界處鍊錶頭部和尾部節點的新增和刪除操作後,編碼變得相對容易。
**實現:
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...