移除链表中的元素203
题目描述:
给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。
可能需要知识点:
1.列表节点 listNode,head只是一个节点名称而已,val就是我们要删的
节点.next就是节点下一个移动方法
2.方法:添加一个虚拟头结点
3.主要思路:定义三个指针
4.以[1,2,3,3]为例
第一个是虚拟头指针dummy,其实它的作用就是来辅助定义另外两个指针,并且遍历链表时,也用到它。
①就形成了[dummy,1,2,3,3] 里面的dummy没有意义,就在最前面另外形成一个空的虚拟头指针
第二个指针是head,第三个指针是prev,他俩配合沿着链表寻找val,相互配合跳过val,彼此之间形成链条,最后形成了一个新的不包含val的新的链表,prev必须比head左一个单位,这样才更好的连起链表。
1.首先判断head是不是空,为空就直接返回null
2.然后从head.next开始循环遍历,删除相等于val的元素
代码实现:
ListNode dummy = new ListNode(0); dummy.next = head; ListNode prve = dummy; while(head != null ){ if(head.val == val){ prve.next = head.next; }else if(head.val != val){ prve = prve.next; } head= head.next; } return dummy.next;