单链表删除结点(java)

本文介绍了如何在Java中创建和管理单链表,包括定义头节点、内部结点类以及实现删除特定值节点的方法。示例代码展示了删除链表中指定值的节点,并提供了测试用例来验证功能。
摘要由CSDN通过智能技术生成

 1 .首先创建单链表里面包括:

1.头节点 head 并且置空

2.定义一个内部类,private私有化(封装性),定义所要保存的值,和指向下一结点的next指针

public class SinglyLinkedList {//单向链表
    private Node head = null;



    //结点类
    private static class Node{
         int value; // 值
         Node next; // 下一个结点指针

        public Node(int value, Node next) {
            this.value = value;
            this.next = next;
        }
    }

 2.定义类方法

 public void remove(int value){
        Node pre = head;//如果head为空就是链表不存在
        if (head == null){
            throw new RuntimeException("单链表为空");
        }
        Node point = pre.next;//头指针的下一个对象指针
      while(pre != null){
          if (pre.value == value){//head指针指向的第一个元素就是要删除的元素
              pre= point;
              pre.next = point.next;
              head = pre;
              return;
          }else if (point.value == value){//不是第一个元素的时候
              pre.next = point.next;
              return;
          }else {//如果当前结点不是所要删除的值,就将指针往下移
              pre = pre.next;
              point = point.next;
          }
      }
    }

1.定义pre指针指向head,如果head为null,链表就不存在

2.如果链表存在,就定义一个衔接指针point指向头节点的下一个结点(也有可能为空)

3.根据情况划分,删除结点

3.试例

 @Test
    public void show(){
        SinglyLinkedList singlyLinkedList = new SinglyLinkedList();
        singlyLinkedList.addNode(1);
        singlyLinkedList.addNode(2);
        singlyLinkedList.addNode(3);
        singlyLinkedList.addNode(4);
        singlyLinkedList.addNode(5);
        singlyLinkedList.remove(5);
        singlyLinkedList.loop1((value)->{
            System.out.println(value);
                }
        );
    }

 

 @Test
    public void show(){
        SinglyLinkedList singlyLinkedList = new SinglyLinkedList();
        singlyLinkedList.addNode(1);
        singlyLinkedList.addNode(2);
        singlyLinkedList.addNode(3);
        singlyLinkedList.addNode(4);
        singlyLinkedList.addNode(5);
        singlyLinkedList.remove(1);
        singlyLinkedList.loop1((value)->{
            System.out.println(value);
                }
        );
}

 

声明:纯纯新手大佬勿cue,有错误及时反馈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值