思路
由于删除操作,需要: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) {
//先判断首节点是否为null
if (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;
}
}
}
记录
总结
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 【d45】【Java】【力扣】203.移除链表元素
发表评论 取消回复