Java 单向链表实现(增,删,查)

这篇博客介绍了链表这一基础数据结构,包括如何创建链表对象,以及使用头插法、尾插法和中间插法插入节点。还展示了如何遍历链表并打印所有节点。在代码示例中,作者强调了在遍历过程中使用临时节点来保持头结点不变的重要性。
摘要由CSDN通过智能技术生成

链表(Linked list)是一种线性表,是一种常见的基础数据结构。

概念不在赘述。

1.创建一个链表对象:

public class ListNode {
    int val; //节点数据
    ListNode next; //下一个节点的引用地址
    ListNode(){}
    ListNode(int val){
        this.val=val;
    }
    ListNode(int val,ListNode next){
        this.val = val;
        this.next = next;
    }
}

2.链表插入(头插法,尾插法,中间插法) 和 遍历

public class ListNodeServiceImpl  {

    //定义一个头结点
    private ListNode head;
    /**
     *增加节点,链尾插入
     */
    public ListNode addListNode(int val) {
        ListNode node = new ListNode(val);//创建一个新的节点
            if (head == null) {
                head = node;//头结点为null,新节点赋值给头结点
                return node;
            }
            ListNode temp = head;//头结点赋值给临时节点。
            while (temp.next != null) {
                temp = temp.next;
            }
            temp.next = node;
            return node;
    }

    /**
     * 打印所有节点
     */
    public void printNodeList() {
        ListNode temp = head; 
        while (temp != null) {
            System.out.println("节点数据:" + temp.val);
            temp = temp.next;
        }
    }


    public static void main(String[] args) {
        ListNodeServiceImpl listNodeService = new ListNodeServiceImpl();
        listNodeService.addListNode(1);
        listNodeService.addListNode(2);
        listNodeService.addListNode(3);
        listNodeService.addListNode(14);
        listNodeService.printNodeList();
    }


}

注意:我当时想为什么不直接用head,干嘛还要引入临时节点呐?

 如果直接用head ,在遍历或者next时候,前面节点就丢失了。当赋值给temp时候,让temp代替head去next下一个节点,head不变。这样head节点不会丢失。(可能比较笨,记录下。当时没想明白(#^.^#))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值