1. 程式人生 > >單鏈表的刪除演算法時間複雜度O(1)和O(n)

單鏈表的刪除演算法時間複雜度O(1)和O(n)

平時我們在計算單鏈表的第i個節點刪除時間複雜度時一般認為是O(n),過程如下

1.先從頭節點開始遍歷連結串列,找到第i-1個節點

2.將第i-1節點next指向第i個節點的next

可以看到時間主要花在了遍歷連結串列上

如果我們已經拿到了要刪除的第i個節點Node(i),就不需要進行遍歷操作和查詢前驅節點了,直接拿Node(i+1)來覆蓋Node(i)即可。

具體的做法如下:

1.Node(i)->data=Node(i)-next->data;

2.Node(i)-next=Node(i+1)->next;

這樣的時間複雜度就是O(1)