删除链表中的一个节点

方法一:找到待删除节点的前一个节点,直接删除

   public void deleteNode(ListNode head,ListNode deletedNode){
         ListNode node=head;
         while(node.next!=deleteNode){
                node=node.next;
         }
                node.next=deleteNode.next;
   }
                 

Paste_Image.png

方法二:节点为最后一个节点,由于它没有后继节点,所以还是需要从头遍历删除;如果只有一个节点,直接把节点置为null;如果有多个节点,且不为最后一个节点,先把待删除节点i下一个节点j的值,赋值给i,再让i指向j的下一个节点;

 public void deleteNode(ListNode head,ListNode deletedNode){
           if(head==null||deleteNode==null)
                      return;
           if(deleteNode.next!=null){
                      //不是尾部节点
                      deleteNode.val=deleteNode.next.val;//把j的值赋给i
                      deleteNode.next=deleteNode.next.next//i指向j的下一个节点
           }else if(head==deleteNode){
                      //单个节点
                      head==deleteNode=null;
           }else{
                      //尾部节点
                      ListNode node=head;
                      while(node.next!=deleteNode){
                           node=node.next;
                      }
                      node.next=null;
           }
           
 }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,353评论 0 33
  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 10,615评论 0 12
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,004评论 18 399
  • 中秋佳节与国庆交叠 一个小长假 旅行便是必不可少的 即便会拥挤在人群里 也不愿放过与美景的邂逅 商场里的大月饼 真...
    沐夏之梦阅读 2,593评论 0 1
  • 1.励志书 这是一本励志书,在罗马尼亚的书店购入,67 Lei,书很厚,但是不重。整体分为三大块---健康、财富和...
    坤小哥阅读 5,371评论 0 1