已知非空线性链表由list指出,链结点的构造为(data,link).请写一算法,将链表中数据域值最小的那个链结点移到链表的最前面。要求:不得额外申请新的链结点
时间: 2023-05-01 22:03:45 浏览: 150
关于单链表的最小值的操作
题目意思:已知非空性链表由list指出,链结点的构造为(data, link)。请写一个算法,将链表中数据域值最小的那个链结点移动到链表的最前面。要求:不得额外申请新的链结点。
解析:
1.首先找到链表中数据域值最小的那个结点;
2.将该结点从当前位置删除,并插入到链表的最前面。
实现代码:
def move_min_head(list):
if len(list)<2: return list
i=0
j=i+1
min_value=list[i][0]
min_index=i
while j<len(list):
if list[j][0]<min_value:
min_value=list[j][0]
min_index=j
j+=1
if min_index==0: return list
else:
del list[min_index]
list.insert(0,[min_value,None])
return list
注意事项:在执行删除和插入操作时,必须保证操作的复杂度为O(1)。在Python中,del和insert操作都可以满足这个要求。
阅读全文