吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 919|回复: 4
收起左侧

[学习记录] 【笔记】java--代码实现链表

[复制链接]
三木零 发表于 2022-3-23 11:10
本帖最后由 三木零 于 2022-3-23 11:12 编辑

只做了部分功能,原理都是差不多的
链表结构大概就是:一个根节点,后边许多的普通节点
根节点只有一个引用没有数据,存放数据的时候会先创建一个节点,然后创建的节点存放了数据
当有下一个数据存放进来的时候,根节点指向的那个节点会创建下一个节点存放着
链表是利用了递归的思想,即自己调用自己
[Java] 纯文本查看 复制代码
// 作为链表对象
class LinkList {
    // 根节点
    private Node root;

    // 添加数据
    public void add(int data) {
        // 判断是否有节点,没有的话创建一个,有的话直接添加数据
        if (this.root == null) {
            this.root = new Node();
            this.root.data = data;
        } else {
            this.root.add(data);
        }
    }

    // 查看所有数据
    public void select() {
        if (this.root == null) {
            System.out.println("null");
        } else {
            System.out.print("[");
            this.root.select();
        }
    }

    // 删除一个节点的数据,使用值作为参数来删除
    // 因为链表的特性,可以直接把下一个节点赋值到当前节点来实现删除功能
    public void delete(int data) {
        // 需要判断一下下一个节点还有没有数据
        if (root == null) {
            System.out.println("没有这个数据");
            return;
        }
        if (data == root.data) {
            System.out.println("成功删除数据:" + data);
            this.root = root.next;
        } else {
            this.root.delete(data);
        }
    }

    // 节点类
    class Node {
        // 数据
        private int data;
        // 下一个节点
        private Node next;

        public Node() {
        }

        // 添加数据的方法
        public void add(int data) {
            // 如果next变量有节点则使用下一个节点的添加数据的方法
            if (this.next == null) {
                this.next = new Node();
                this.next.data = data;
            } else {
                this.next.add(data);
            }
        }

        // 查看数据
        public void select() {
            System.out.print(this.data);
            if (this.next != null) {
                System.out.print(",");
                this.next.select();
            } else {
                System.out.print("]");
            }
        }

        // 删除节点
        public void delete(int data) {
            // 需要判断一下下一个节点还有没有数据
            if (this.next == null) {
                System.out.println("没有这个数据");
                return;
            }
            if (this.next.data == data) {
                System.out.println("成功删除数据:" + data);
                this.next = this.next.next;
            } else {
                this.next.delete(data);
            }
        }
    }
}

=================Main方法中测试代码====================
[Java] 纯文本查看 复制代码
public class Main {
    public static void main(String[] args) {
        System.out.println("链表算法实现");
        LinkList linkList = new LinkList();
        linkList.add(12);
        linkList.add(23);
        linkList.add(34);
        linkList.add(56);
        linkList.add(78);
        linkList.delete(78);
        linkList.select();
    }
}

=================测试结果====================
image.png

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
sysmnbvcxz123 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

MrMyn 发表于 2022-3-23 11:20
可以,试一下
CONNECT01 发表于 2022-3-23 11:22
 楼主| 三木零 发表于 2022-3-23 11:30
CONNECT01 发表于 2022-3-23 11:22
思路很不错,很久没写过这种了。

写的有些简略了,还有很多功能没写
 楼主| 三木零 发表于 2022-3-23 11:31

加油加油
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 15:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表