1. 程式人生 > >數據結構與算法(4)----->鏈表、二分搜索

數據結構與算法(4)----->鏈表、二分搜索

無序 有序 通過 處理 als 思路 結構 blog clas

1. 鏈表的基本概念

  1. 鏈表和數組一樣都是一種線性結構;
    • 數組是一段連續的存儲空間;
    • 鏈表空間不一定保證連續,是臨時分配的;
  2. 鏈表的分類
    • 按方向:
      • 單鏈表:每個節點只能通過next指針指向下一個節點;
      • 雙鏈表:除了可以用next指針之外,還可以用previous指針,指向前一個節點;
    • 按有無環:
      • 普通鏈表
      • 循環鏈表(首尾相接的鏈表,最後一個元素的next指針指向第一個元素;對於雙鏈表,第一個元素的previous指針還需要指向最後一個元素)

2. 單鏈表的翻轉操作

  1. 當鏈表為空或者長度為1時,特殊處理;
  2. 其他的單鏈表,采用如下方式:
    • 假設前面已經翻轉好的部分頭部為head,當前節點是now
      • 將now節點的next指針指向head;
      • 將now節點設置為新的翻轉完成的節點的頭部head now;
      • 將之前now節點的下一個節點的next指針,指向head now,如此類推~

3. 二分搜索常用場景

  1. 在有序序列中查找一個數;
    • 例如,給定一個數組arr,判斷整數m是否在arr之中(思路:判斷arr中間的數mid與m的大小關系,如果m>mid,則mid左邊部分都小於m(因為有序),同樣的方法,對mid與右半部分之間的元素再次選取mid2進行同樣的搜索操作!每次搜索範圍減半,如果最後搜索到0都沒找到m,則m不在arr數組之中!返回false)
  2. 二分搜索還能用於無序序列之中;

數據結構與算法(4)----->鏈表、二分搜索