单链表中删除所有值为x的元素
单链表中删除所有值为x的元素可以通过以下两种方式实现:
1. 递归删除:首先删除第一个值为x的元素,然后将下一个节点当做头指针传入递归函数,重复这个过程直到链表中所有值为x的元素都被删除。
2. 非递归删除:首先判断头结点的值是否和x相等,如果相等则删除头结点。接着维护两个指针,一个指向头结点,一个指向第二个节点,重复以下过程直到第二个指针为空:
a. 如果第二个节点的值和x相等,则删除第二个节点,并将第一个节点的下一个指向第二个节点的下一个。
b. 如果第二个节点的值和x不相等,则将第二个指针的值赋为第一个节点的next,然后后移第二个指针。
需要注意的是,以上两种方式都需要考虑链表是否为空的情况。
