雙向鍊錶與單向鍊錶的比較
單向鍊錶查詢方向只能是乙個方向,雙向鍊錶的可以向前也可以向後
單向鍊錶是不可以自我刪除的,需要靠輔助節點,並且總要找到待刪除節點的前乙個結點,雙向鍊錶是可以自我刪除的
雙向鍊錶的尾部新增
思路分析
找到雙向鍊錶的最後節點,同單向鍊錶的遍歷方式
temp.next = new node
new node.pre = temp;
尾節點的後繼指標後指,新節點的前繼指標前指
**實現
我的**:
package linkedlist;
public
class
doublelinkedkist
}class
dll//在這裡注意,尾節點的判定,不是本身是空的
//而是看他的next是否為空,show方法輸出的時候可以直接判定本身是否為空
temp = temp.next;
} temp.next = hero;
hero.pre = temp;
}public
void
show()
hero temp = head.next;
while
(temp != null)}}
class
hero';
}public
hero
(int no, string name, string nickname)
}
雙向鍊錶的刪除
思路分析
自我刪除,無需找到待刪除結點的前乙個結點
直接找到待刪除結點
temp.pre.next = temp.next
temp.next.pre = temp.pre
**實現:
我的**:
public
intgetlength()
return size;
}public
void
delete
(int no)
int size =
getlength()
;if(no <=
0|| no > size)
boolean isflag =
false
;while
(true)if
(temp.no == no)
temp = temp.next;}if
(isflag)
else
}
修改:
if
(isflag)
else
如果刪除的是最後乙個節點,會出現空指標異常,所以應該加乙個判斷語句,判斷是否為最後乙個節點
if
(isflag)
else
}
總結
作為鍊錶本身就帶有的方法,我們在呼叫其本身的方法時,沒必要在傳入頭指標
鍊錶操作自身,作為已知元素,也是沒必要判定是否為空鍊錶的
**太過冗餘和麻煩
沒碼乙個**塊,想清楚每乙個**塊的要素,while迴圈語句,初始條件,迴圈體,迭代條件,終止條件,每一次都會漏
mysql 雙向鍊錶 雙向鍊錶
雙向鍊錶是鍊錶變型,相比於單鏈表導航或者是向前和向後的兩種方式。以下是重要的術語來理解雙向鍊錶的概念 link 鍊錶的每個鏈路儲存資料稱為乙個元素。linkedlist linkedlist包含連線鏈結到名為首先第乙個鏈結,並稱為最後的最後乙個鏈結 last 雙向鍊錶表示 按照如上圖中所示,以下是要...
雙向鍊錶(鍊錶)
雙向鍊錶 每個節點包含指向後繼節點的指標和指向前驅節點的指標。繼承關係圖 實體圖 duallinklist.h duallinklist 雙向鍊錶類模板 成員變數 node 節點實體 m header 頭節點 m length 鍊錶長度 m step 步進長度 m current 當前節點前乙個節點...
雙向鍊錶 3 反轉雙向鍊錶
雙向鍊錶的反轉過程,可以參考下面的例圖。a 原始雙向鍊錶 b 反轉後的雙向鍊錶 下面是乙個用於反轉雙向鍊錶的簡單方法。所需要做的事情就是交換每個節點的前向指標和後向指標,然後調整鍊錶的頭指標和尾指標。include struct node 對鍊錶進行反轉 void reverse node head...