OJ题-删除链表中等于给定值val的所有结点(力扣)

题目:
在这里插入图片描述

思路:建立一个新的空链表,遍历原链表,将不是要删除的结点,尾插到新链表中

/**
 * Definition for singly-linked list.
 * public class ListNode {   
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode removeElements(ListNode head, int val) {
        ListNode result=null;//新链表
        ListNode last=null;//result的最后一个结点
        
        ListNode cur=head;//从原链表的第一个结点遍历
        while(cur!=null){
            if(cur.val==val){//若与要删除的结点相同,则跳过,继续判断下一个结点
                cur=cur.next;
                continue;
            }
            ListNode next=cur.next;
            if(result==null){//若新链表为空。则更新cur为新链表的第一个结点
                result=cur;
            }else{//不为空则进行尾插
                last.next=cur;
            }
            cur.next=null;
            last=cur;
            cur=next;
        }
        return result;//返回新链表
    }
}

执行结果:
在这里插入图片描述

发布了61 篇原创文章 · 获赞 3 · 访问量 1212

猜你喜欢

转载自blog.csdn.net/qq_44847147/article/details/103970453