python已知有序表中的元素以值递增有序排列,并以带头结点的单链表作存储结构。 试写一高效算法,删除表中所有值大于mink且小于maxk的元素(若表中存在这样的元素)同时释放被删除结点空间,并分析算法的时间复杂度。
时间: 2023-05-30 13:05:32 浏览: 92
python算法与数据结构之单链表的实现代码
算法思路:
遍历链表,找到第一个大于mink的结点p,然后从p开始遍历链表,直到找到第一个大于等于maxk的结点q,将p到q之间的结点删除。
算法实现:
```python
def delete_range(head, mink, maxk):
p = head.next
pre = head
while p and p.data <= mink:
pre = p
p = p.next
if not p:
return
q = p
while q and q.data < maxk:
q = q.next
pre.next = q
while p != q:
temp = p
p = p.next
del temp
```
算法分析:
该算法只需遍历一次链表,时间复杂度为O(n),其中n为链表中的结点数。因此,该算法的时间复杂度为O(n)。
阅读全文