关于队列和时间复杂度的问题

2024-11-28 18:07:58
推荐回答(1个)
回答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)