數據結構(五)鏈表

  • 真正的動態數據結構
  • 最簡單的動態數據結構
  • 可以深入的理解引用
  • 可以深入的理解遞歸

在這裏插入圖片描述

LinkedList實現

內部類Node,用於存放數據和next;

LinkedList有一個Node類型的變量指向head。

  • 在List頭部添加元素
  • 在List中間添加元素
  • 刪除List中指定位置的元素
  • 修改List中指定位置的元素
  • 查找指定位置的元素

注意:此處的List的實現都使用了虛擬頭節點dummyHead,dummyHead的元素value爲null,next指向索引爲0的節點。

時間複雜度分析

這是的鏈表是單鏈表的分析:

  • 增: O ( n ) O(n) ,在鏈表頭節點增加元素時間複雜度爲 O ( 1 ) O(1)
  • 刪: O ( n ) O(n) ,在鏈表頭節點刪除元素時間複雜度爲 O ( 1 ) O(1)
  • 改: O ( n ) O(n)
  • 查: O ( n ) O(n)

用鏈表實現棧

用帶有尾指針的鏈表實現隊列

在這裏插入圖片描述

刪除鏈表中的元素:

刪除一個節點首先找到被刪除節點之前的一個節點。如果是頭節點需要單獨處理,因爲頭節點沒有前一個節點。另一種思路是加入虛擬頭節點,統一操作。