民國108年 第2梯次 電腦軟體設計(JAVA)乙級 學科

第52題

從一個擁有n 個節點的鏈結串列刪除一個值為x 之節點,在最壞情況下所需時間複雜度為多少?

題目

從一個擁有n 個節點的鏈結串列刪除一個值為x 之節點,在最壞情況下所需時間複雜度為多少?

  1. (1) θ(1)
  2. (2) θ(log n)
  3. (3) θ(n log n)
  4. (4) θ(n)

官方答案

(4) θ(n)

解析

單向鏈結串列只能從頭節點依序走訪,刪除值為 x 的節點時必須先找到它的前一個節點,才能修改指標完成刪除。最壞情況是 x 位於串列尾端或根本不存在,需檢查全部 n 個節點,比較次數與 n 成正比,故時間複雜度為 θ(n)。θ(1) 只有在已持有前驅節點指標(例如雙向串列)時才成立;θ(log n) 需具備隨機存取或已排序的索引結構;θ(n log n) 通常是排序演算法的成本。

AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。

官方資料