數據結構與算法(4)----->鏈表、二分搜索
阿新 • • 發佈:2018-02-03
無序 有序 通過 處理 als 思路 結構 blog clas
1. 鏈表的基本概念
- 鏈表和數組一樣都是一種線性結構;
- 數組是一段連續的存儲空間;
- 鏈表空間不一定保證連續,是臨時分配的;
- 鏈表的分類
- 按方向:
- 單鏈表:每個節點只能通過next指針指向下一個節點;
- 雙鏈表:除了可以用next指針之外,還可以用previous指針,指向前一個節點;
- 按有無環:
- 普通鏈表
- 循環鏈表(首尾相接的鏈表,最後一個元素的next指針指向第一個元素;對於雙鏈表,第一個元素的previous指針還需要指向最後一個元素)
- 按方向:
2. 單鏈表的翻轉操作
- 當鏈表為空或者長度為1時,特殊處理;
- 其他的單鏈表,采用如下方式:
- 假設前面已經翻轉好的部分頭部為head,當前節點是now
- 將now節點的next指針指向head;
- 將now節點設置為新的翻轉完成的節點的頭部head now;
- 將之前now節點的下一個節點的next指針,指向head now,如此類推~
- 假設前面已經翻轉好的部分頭部為head,當前節點是now
3. 二分搜索常用場景
- 在有序序列中查找一個數;
- 例如,給定一個數組arr,判斷整數m是否在arr之中(思路:判斷arr中間的數mid與m的大小關系,如果m>mid,則mid左邊部分都小於m(因為有序),同樣的方法,對mid與右半部分之間的元素再次選取mid2進行同樣的搜索操作!每次搜索範圍減半,如果最後搜索到0都沒找到m,則m不在arr數組之中!返回false)
- 二分搜索還能用於無序序列之中;
數據結構與算法(4)----->鏈表、二分搜索