单链表查找插入删除算法时间效率分析
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单链表查找插⼊删除算法时间效率分析单链表查找时间效率分析:
代码:
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)。