题目链接:https://leetcode-cn.com/problems/remove-linked-list-elements/
思路:建立一个新的头节点指向head,这样的原因是好判断删除。然后用一个临时指针来进行操作(临时指针等于新的头节点,原因是好用next的那个节点判断),当碰到相等的节点值,就把next指向next的next即可,如果不相等就移动到next节点即可。
上代码:
/**
* Example:
* var li = ListNode(5)
* var v = li.`val`
* Definition for singly-linked list.
* class ListNode(var `val`: Int) {
* var next: ListNode? = null
* }
*/
class Solution {
fun removeElements(head: ListNode?, `val`: Int): ListNode? {
val newHead = ListNode(0)
newHead.next = head
var tmp = newHead
while (tmp.next != null) {
when (tmp.next!!.`val`) {
`val` -> tmp.next = tmp.next!!.next
else -> tmp = tmp.next!!
}
}
return newHead.next
}
}