题目如下:
原理:
就是很简单的数据结构,思路是在链表中,找到要被删除的链表元素,将这个元素的前一个元素的结点,指向要被删除的元素的后一个元素的结点,相当于,A=>B=>C,如果要删除B元素,只需要将A元素的箭头直接指向C元素,那么B元素将不在存在这个链表当中。使用有GC(垃圾回收)的语音,可以自动将被舍弃的B元素回收掉,如果语言没有这个机制,则要手动回收,否则会占据内存
code:
public ListNode removeElements(ListNode head, int val) {
ListNode dummy = new ListNode(-1,head);//设置虚拟节点
ListNode pre = dummy;//前一个元素
ListNode cur = head;//当前要被删除的元素
while(cur!=null){
if(cur.val == val){
pre.next = cur.next;//前一个元素指向被删除的后一个元素
}else{
pre=cur;
}
cur=cur.next;
}return dummy.next;
}