鍊錶是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的;
在鍊錶中,尋找乙個特定元素的唯一方法,就是沿著這個元素的鏈一直向下尋找;
無序陣列搜尋慢,有序陣列插入慢,且陣列的刪除效率低,大小固定;
鍊錶則常用來替換陣列,作為其他儲存結構的基礎,以解決上面問題;
除非需要頻繁的用下標隨機訪問各個資料,否則很多地方都可以用鍊錶代替陣列。
單鏈表雙端鍊錶
有序鍊錶
雙向鍊錶
有迭代器的鍊錶
1. 建立乙個鏈結點類
2. 單鏈表實現類, 其中一些關鍵的地方都有注釋,這裡就不再多說了
上面的linkiterator迭代器類的實現如下
3. 對單鏈表實現類的使用
4. 迭代器的使用
5. 之前介紹棧時有提到可以使用鍊錶實現:將arraystack中的陣列替換為linklist,push用insertfirst實現,pop用deletefirst實現,也是完全可以的,實現**如下:
資料項按照關鍵值有序排列
之前有用有序陣列實現優先順序佇列,然而使用有序鍊錶也是可以實現的
有序鍊錶可以用於一種高效的排序機制,假設有乙個無序陣列,如果從這個陣列中取出資料,然後乙個乙個的插入有序鍊錶,他們自動的按順序排列,把它們從有序表中刪除,重新放入陣列,那麼陣列就排好序了,這種排序方式比常用的插入排序效率更高些;
那麼為什麼不直接用有序陣列呢?有序鍊錶的插入效率要優於有序陣列,因為不需要移動元素;而且鍊錶所占用記憶體是充分利用的,而且擴充方便,不用擔心角標越界問題;
資料結構和演算法 單鏈表
linkedlistlist new linkedlist list.add fan list.add 宋江 list.add 盧俊義 list.add 林沖 list.add 武松 list.insert 李逵 3 list.print public class linkednode public...
資料結構與演算法之 鍊錶(二) 有序單鏈表合併
includeusing namespace std struct node node create list int n node head null node p new node if p null head p while n p next q p q p next null return ...
資料結構 7 單鏈表有序連線
單鏈表,鍊錶合併為有序鍊錶,先將兩個鍊錶排序,然後將短的鍊錶中的數插入到長的鍊錶中。includeusing namespace std struct node node結構體,裡面有乙個node指標,用來指向下乙個node物件 node create int n 建立鍊錶,引數n表示結點的個數,返...