單鏈表查找/插入/刪除算法時間效率分析


單鏈表查找時間效率分析:

代碼:

Lnode *LocateElem_L(LinkList L, ElemType e){
    //在線性表L中查找值為 e 的數據元素
    //找到,則返回 L 中值為 e 的數據元素的地址
    //查找失敗返回NULL
    p=L->next;
    while(p!=NULL && p->data!=e){
        p=p->next;
    }
    return p;
}

 

上述代碼中,循環體里的 p=p->next 執行多少次?或者說循環執行多少次,和我們要查找的元素 e 所在位置有關系

如果單鏈表中第一個元素,或者說首元結點就是 e ,那么僅執行一次即可。

如果不是,則順着指針鏈,依次向后查找。

因線性鏈表只能順序存取,即在查找時要從頭指針找起,查找的時間福再度為 O(n)。

 

插入和刪除:

因線性鏈表在插入或刪除時,不需要移動元素,只要修改指針,一般情況下時間復雜度為O(1)。

但是,如果要在單鏈表中進行前插或刪除操作,由於要從頭查找前驅結點,所耗時間復雜度為O(n)。

進行插入和刪除的操作是常數即便,但是尋找前驅才要O(n)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM