将单链表的负数移到最前面python
时间: 2024-10-14 18:05:59 浏览: 31
在Python中,你可以通过遍历链表并将每个节点的值与0比较,将所有负数移动到前面的方式来实现这个功能。这里有一个简单的算法步骤:
1. 创建两个指针,一个普通指针`current`用于遍历整个链表,另一个`prev`用于存储前一个节点。
2. 初始化`prev`为`None`,`current`为链表的头结点。
3. 遍历链表,对于每个节点:
a. 如果当前节点的值小于0,交换`current`和`prev`的指向,然后将`prev`更新为`current`。
b. 否则,正常前进`prev`和`current`。
4. 当`current`为空时,`prev`就是新链表的头结点,因为它已经包含了所有的负数。
以下是Python代码实现的例子:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def move_negatives_to_front(head):
if head is None or head.val >= 0:
return head
prev = None
current = head
while current is not None:
if current.val < 0:
if prev is None:
# 没有正数,直接置当前为头结点
head = current
else:
# 替换掉负数元素的位置
prev.next = current.next
head = current
prev = current
else:
prev = current
current = current.next
return head
```
阅读全文