📜  将所有零移到链表的前面(1)

📅  最后修改于: 2023-12-03 15:09:36.412000             🧑  作者: Mango

将所有零移到链表的前面

有时候我们需要将链表中的某些元素进行排列组合,而其中一个常见的需求就是需要将链表中的所有零移到前面。

解题思路

本题的解题思路非常简单,我们只需要创建两个指针:一个指向链表头节点,另一个用于遍历链表。

遍历链表,如果当前节点的值为零,我们就将它移到链表的前面。这个操作可以通过修改指针的指向来实现。

最后返回新的链表即可。

代码实现

以下是使用 Python 语言实现的代码片段:

class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None
class Solution:
    def moveZeroes(self, head: ListNode) -> ListNode:
        dummy = ListNode(0)
        dummy.next = head
        cur = dummy
        while cur.next:
            if cur.next.val == 0:
                tmp = cur.next
                cur.next = cur.next.next
                tmp.next = dummy.next
                dummy.next = tmp
            else:
                cur = cur.next
        return dummy.next
代码解释
  1. 首先定义了一个链表节点 ListNode
  2. 定义一个 Solution 类,其中包含一个方法 moveZeroes
  3. moveZeroes 方法里定义了两个指针 dummycur
  4. 遍历链表,如果 cur.next 节点的值为0,则将其移到链表的前面。
  5. 最后返回新的链表。
总结

本题解题思路非常简单,只需要掌握链表的基本操作和指针的指向即可。在实现过程中要注意处理好指针的指向和链表的断开与连接。