/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func removeElements(head *ListNode, val int) *ListNode {
var prev *ListNode
th := head
for th != nil {
prev = th
th = th.Next
for th != nil && th.Val == val {
prev.Next = th.Next
th = th.Next
}
}
for head != nil && head.Val == val {
head = head.Next
}
return head
}