關於佇列和時間複雜度的問題
阿新 • • 發佈:2019-02-11
用迴圈單鏈表表示的佇列長度為n,
若只設頭指標,則出隊和入隊的時間複雜度分別是( 含頭結點時為O(1)、不含頭結點時為 O(n) )和(O(n));
若只設尾指標,則出隊和入隊的時間複雜度分別是(O(1))和( O(1))。 為什麼呢??
原因:
a) 如果只有頭指標,且含頭結點
1. 出隊: O(1),因為只要把頭結點的下一個結點刪除就好了
2. 入隊: O(n),要把新的結點插入到隊尾,必須把佇列歷遍,找到隊尾,才能插入
b) 如果只有頭指標,不含頭結點
1. 出隊: O(n),要把頭結點刪除,必須歷遍佇列,找到隊尾,才能更新頭指標 (迴圈單鏈的緣故,如果僅僅是普通單鏈,則本操作也是O(1) )
2. 入隊: O(n),同 (a).2
c) 如果只有尾指標
1. 出隊: O(1),只要把尾指標的下一個結點(沒有頭結點的情況)或者下下個結點(有頭結點的情況)刪除即可
2. 入隊: O(1),只要在尾指標的後面插入新的結點,並更新尾結點,所以是O(1)