自己用20分钟java实现的单向链表(含有增删改查操作)

本文详细介绍了单链表在Java中的实现过程,包括节点的添加、查找、修改及删除等核心操作,并通过实例演示了如何创建和操作单链表。文章还探讨了内部类在链表实现中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package test1;
// 建立一个链表结构
public class SingleList {
    //定义头结点指针
    Node head = null;
    //定义链表的节点数据结构
    class Node{
        int val;
        Node next;
        public Node(int val){
            this.val = val;
            next = null;
        }
    }
     //在链表的尾部增加一个节点
    public void add(int num){ 
        Node node = new Node(num);
        if(head==null)
            head=node;
        else
            search().next=node;
    }
    //获得链表尾部的节点
    public Node search(){       
        Node nodelast = head;
        while(nodelast.next!=null){
            nodelast = nodelast.next;
        }
        return nodelast;
    }
    //实现查找链表中特定的某个节点的数据为num并且返回该节点
    public  Node search(int num){ 
        Node nodelast = head;
        while(nodelast.next!=null){
            if(nodelast.val==num)
                return nodelast;
            nodelast = nodelast.next;
        }
        return null;
    }
    //实现查找链表中特定的某个节点下一个节点的数据为num并且返回该节点
    public  Node searchprevious(int num){ 
        Node nodelast = head;
        while(nodelast.next!=null){
            if(nodelast.next.val==num)
                return nodelast;
            nodelast = nodelast.next;
        }
        return null;
    }
    //更改链表中的操作
    public void change(int num,int numnew){
        if(search(num)!=null)
            search(num).val=numnew;
    }
    //删除链表的某个节点
    public void delete(int num){
        if(search(num)!=null)
        searchprevious(num).next = search(num).next;
    }
    //打印链表
    public void printList(){
        Node cur = head;
        while(cur!=null){
            System.out.println(cur.val);
            cur=cur.next;
        }
    }
    public static void main(String[] args) {
        SingleList singlelist = new SingleList();
        singlelist.add(1);
        singlelist.add(2);
        singlelist.add(3);
        singlelist.add(4);
        singlelist.change(3,8);
        singlelist.delete(8);
        singlelist.printList();
//        while(singlelist.head!=null){
//            System.out.println(singlelist.head.val);
//            singlelist.head=singlelist.head.next;
//        }
    }

}

注意事项 1 在SingleList中定义一个head节点   2 注意如何实现链表删除操作的    3  疑问 在任何非main的函数中都可以 使用Node node = new Node(num);但是为何

在main函数中就不行了呢。我知道这是内部类的范畴

 

转载于:https://www.cnblogs.com/winAlaugh/p/5405955.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值