大厂算法题目-单链表删除数字

  |   0 评论   |   0 浏览

题目描述

给你一个单链表和一个数字,你要删除节点上数字等于给定数字的那些节点,然后返回删除节点后的单链表。

比如说,给定的单链表是:

1 → 2 → 4 → 1 → 8 → 1

要删除的数字是1。那么删除1后,返回的单链表是:

2 → 4 → 8

思路

  1. 先定义一个单链表
  2. 定义一个虚拟节点dummy,指向单链表的头节点
  3. 再定义一个移动指针节点p,逐步移动指针节点p,与给定的数字进行比较
  4. 如果给定的数字与节点p的数字相同,则断开此节点(即p.next = p.next.next);如果不相同,则继续移动指针p(即p = p.next)

WechatIMG2334

Java代码实现

private LinkedNode delNumInLinkedNode3(LinkedNode linkedNode, int num) {
  //定义虚拟节点,指向链表头部
  LinkedNode dummy = new LinkedNode(0);
  dummy.next = linkedNode;
  //定义移动节点p,凡是这种需要逐个比对的,一般都需要定义移动指针
  LinkedNode p = dummy;

  //逐个比对
  while (p.next != null) {
    //如果节点的数字 跟 给定的数字相同,则断开此节点
    if (p.next.value == num) {
      p.next = p.next.next;
    }
    //如果不相同,则继续移动指针
    else {
      p = p.next;
    }
  }

  return dummy.next;
}

完整代码地址:https://gitee.com/yclxiao/specialty/blob/master/javacore/src/main/java/com/ycl/javacore/algorithm/AlgoCasts48.java

本篇完结!感谢你的阅读,欢迎点赞 关注 收藏 私信!!!

原文链接: http://www.mangod.top/articles/2023/08/26/1693008022363.htmlhttps://mp.weixin.qq.com/s/s-PStqs_7elrm5k_53Q6UQ


标题:大厂算法题目-单链表删除数字
作者:不焦躁程序员
地址:http://www.mangod.top/articles/2023/08/26/1693008022363.html