java雙向鏈表實(shí)現(xiàn) c 單向鏈表和雙向鏈表有什么區(qū)別?各自有什么優(yōu)缺點(diǎn)?
c 單向鏈表和雙向鏈表有什么區(qū)別?各自有什么優(yōu)缺點(diǎn)?單向鏈表:單向鏈表包含兩個字段,一個是信息字段,另一個是指針字段。也就是說,單向鏈表的節(jié)點(diǎn)分為兩部分,一部分是保存或顯示該節(jié)點(diǎn)的信息,第二部分存
c 單向鏈表和雙向鏈表有什么區(qū)別?各自有什么優(yōu)缺點(diǎn)?
單向鏈表:單向鏈表包含兩個字段,一個是信息字段,另一個是指針字段。也就是說,單向鏈表的節(jié)點(diǎn)分為兩部分,一部分是保存或顯示該節(jié)點(diǎn)的信息,第二部分存儲下一個節(jié)點(diǎn)的地址,最后一個節(jié)點(diǎn)指向空值。優(yōu)點(diǎn):在單向鏈表中添加和刪除節(jié)點(diǎn)比較簡單。遍歷時沒有死循環(huán)。(雙向不會循環(huán),循環(huán)列表忘記控制,很容易進(jìn)入循環(huán));缺點(diǎn):只能自始至終遍歷。我們只能找到接班人,不能找到先行者,也就是說,我們只能前進(jìn)。雙向鏈表:每個節(jié)點(diǎn)有2個鏈接,一個是前一個節(jié)點(diǎn)(當(dāng)這個鏈接是第一個鏈接時,指向空值或空列表),另一個是后一個節(jié)點(diǎn)(當(dāng)這個鏈接是最后一個鏈接時,指向空值或空列表)。也就是說,雙向鏈表有兩個指針,一個是指向上一個節(jié)點(diǎn)的指針,另一個是指向下一個節(jié)點(diǎn)的指針。優(yōu)點(diǎn):可以找到前驅(qū)和后繼,可以進(jìn)退;缺點(diǎn):添加刪除節(jié)點(diǎn)復(fù)雜。
C 如果把單向鏈表改成雙向鏈表?
單向鏈表和雙向鏈表的區(qū)別在于,在單向鏈表中,每個節(jié)點(diǎn)只有一個指向下一個節(jié)點(diǎn)的指針,而雙向鏈表分別有兩個指向上一個節(jié)點(diǎn)和下一個節(jié)點(diǎn)的指針。因此,很容易將單向鏈表轉(zhuǎn)換為雙向鏈表。只需向每個節(jié)點(diǎn)添加一個指針。T示例程序(c): node*list(node*head)T{T node*P,*q/T P=head,q=null,T while(P!=null)//在添加前向指針的同時遍歷返回Q//返回雙向鏈表的尾部節(jié)點(diǎn)