雙向循環(huán)鏈表的示意圖 在雙向鏈表存儲結(jié)構(gòu)中?
在雙向鏈表存儲結(jié)構(gòu)中?在實(shí)際的軟件開發(fā)中,從鏈表中刪除一個(gè)數(shù)據(jù)只不過是這兩種情況:對于雙向鏈表,雙向鏈表中的節(jié)點(diǎn)保存了前體節(jié)點(diǎn)的指針,所以刪除時(shí)不需要像單鏈表那樣遍歷。因此,對于第二種情況,單鏈表刪除
在雙向鏈表存儲結(jié)構(gòu)中?
在實(shí)際的軟件開發(fā)中,從鏈表中刪除一個(gè)數(shù)據(jù)只不過是這兩種情況:
對于雙向鏈表,雙向鏈表中的節(jié)點(diǎn)保存了前體節(jié)點(diǎn)的指針,所以刪除時(shí)不需要像單鏈表那樣遍歷。因此,對于第二種情況,單鏈表刪除操作需要o(n)時(shí)間復(fù)雜度,而雙向鏈表只需要o(1)時(shí)間復(fù)雜度。因?yàn)閱蜗蜴湵硪闅v一次,找到前導(dǎo)節(jié)點(diǎn),然后刪除,所以是O(n)
C 如果把單向鏈表改成雙向鏈表?
單向鏈表和雙向鏈表的區(qū)別是:在單向鏈表中,每個(gè)節(jié)點(diǎn)只有一個(gè)指向下一個(gè)節(jié)點(diǎn)的指針,而雙向鏈表有兩個(gè)指向上一個(gè)和下一個(gè)節(jié)點(diǎn)的指針。因此,很容易將單向鏈表轉(zhuǎn)換為雙向鏈表。只需向每個(gè)節(jié)點(diǎn)添加一個(gè)指針。T示例程序(c): node*list(node*head)T{T node*P,*q/T P=head,q=null,T while(P!=null)//遍歷同時(shí)添加正向指針返回Q//返回雙向鏈表的尾部節(jié)點(diǎn)}
區(qū)別如下;
1。雙向鏈表:又稱雙鏈表,是一種鏈表,每個(gè)數(shù)據(jù)節(jié)點(diǎn)有兩個(gè)指針,分別指向直接后繼和直接前導(dǎo)。單向鏈表:是一種鏈表,其特點(diǎn)是單向鏈接方向,通過順序讀取從頭部開始訪問鏈表。
2、雙向鏈表:從雙向鏈表中的任意一個(gè)節(jié)點(diǎn)開始,就可以方便地訪問前導(dǎo)節(jié)點(diǎn)和后繼節(jié)點(diǎn)。
2. 單向鏈表:創(chuàng)建單個(gè)節(jié)點(diǎn)非常方便。普通線性存儲器在創(chuàng)建數(shù)據(jù)時(shí)通常需要設(shè)置數(shù)據(jù)的大小。訪問節(jié)點(diǎn)很方便,您可以通過循環(huán)或遞歸方法訪問任何數(shù)據(jù)。
3、缺點(diǎn)不同
1。雙向鏈表:添加和刪除節(jié)點(diǎn)比較復(fù)雜,需要多分配一個(gè)指針存儲空間。
2. 單向鏈表:刪除節(jié)點(diǎn)非常方便。它不需要像線性結(jié)構(gòu)那樣移動剩余數(shù)據(jù),但平均訪問效率低于線性列表。