在长度为n的()上,删除第一个元素,其算法的时间复杂度为O(n)

在长度为n的()上,删除第一个元素,其算法的时间复杂度为O(n)
A.只有表头指针的不带表头结点的循环单链表
B.只有表尾指针的不带表头结点的循环单链表
C.只有表尾指针的带表头结点的循环单链表
D.只有表头指针的带表头结点的循环单链表

答案:A

分析:
单链表只能按单方向顺序访问节点,按题目意思,只有当A条件时,并当新元素的节点从表头插入,使得第一个元素的节点在表尾,才成立。这样表头指针顺序访问节点,访问至链表尾部时,复杂度刚好为O(n)。
在这里插入图片描述
对于B而言,不带头节点循环链表,表尾指针,如果是头插法则第一元素就是表尾指针rear(假设表尾指针为rear)所指的节点,即当前节点,时间复杂度为O(1)。如果是正常顺序插入节点(即非头插法),由于是循环链表,表尾指针rear指向最后一个元素,rear->next即为第一个元素(因为循环链表,表尾的next是表头,且没有头节点),时间复杂度仍然是O(1),所以B不成立。
对于C而言,和B情况相似,多了一个表头节点,如果是头插法,则和B一样表尾指针rear所指当前元素即为第一个元素,时间复杂度为O(1)。如果是正常顺序插入节点,则比B多一个头节点,就变成rear->next->next,但时间复杂度仍然是O(1),所以C不成立。
对于D而言,比A多一个头节点,虽然当头插法时时间复杂度为O(n+1),根据次数化解原则,就为O(n),但是答案不是选D(我也不是很清楚,老师讲解时直接跳过没有解释清楚,希望大佬评论解答,感激!!!)

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值