思路
由于删除操作,需要:pre.next=cur.next
但是单链表无法获得 前面节点,
所以:定义指针 cur 指向当前节点,判断cur.next 的val值,是否等于传入的val值
cur :从head 到倒数第二个
最后单独判断头节点的val值
代码
public class Main {public static void main(String[] args) {Solution solution = new Solution();
// ListNode listNode6 = new ListNode(6, null);
// ListNode listNode5 = new ListNode(5, listNode6);ListNode listNode4 = new ListNode(7, null);ListNode listNode3 = new ListNode(7, listNode4);ListNode listNode2 = new ListNode(7, listNode3);ListNode head = new ListNode(7, listNode2);solution.removeElements(head,7);}public static class ListNode {int val;ListNode next;ListNode() {}ListNode(int val) { this.val = val; }ListNode(int val, ListNode next) { this.val = val; this.next = next; }}public static class Solution {public ListNode removeElements(ListNode head, int val) {//先判断首节点是否为nullif (head == null) {return null;}ListNode cur=head;//判断首节点后面的节点//cur指针 从首节点开始,到倒数第二个节点//因为使用的是 cur.next.val判断,所以cur只需要走到倒数第二个while (cur.next !=null){if(cur.next.val == val){//执行删除操作cur.next = cur.next.next;}else {cur=cur.next;}}//再判断首节点if (head.val == val) {head = head.next;}return head;}}
}