博客
关于我
双链表的增删改查操作(java实现)
阅读量:106 次
发布时间:2019-02-26

本文共 3378 字,大约阅读时间需要 11 分钟。

双向链表的实现与应用

双向链表的创建

在Java中,我们可以通过自定义类来实现双向链表。以下是一个简单的实现示例:

class DoubleLinkedList {    private HeroNode head = new HeroNode(0, "", "");    public void add(HeroNode heroNode) {        HeroNode temp = head;        while (true) {            if (temp.next == null) {                break;            }            temp = temp.next;        }        temp.next = heroNode;        heroNode.pre = temp;    }    public void showLinklist() {        if (head.next == null) {            System.out.println("链表为空");            return;        }        HeroNode temp = head.next;        while (temp != null) {            System.out.println(temp);            temp = temp.next;        }    }}class HeroNode {    public int id;    public String name;    public String nickname;    public HeroNode next;    public HeroNode pre;    public HeroNode(int id, String name, String nickname) {        this.id = id;        this.name = name;        this.nickname = nickname;    }    @Override    public String toString() {        return "HeroNode [id=" + id + ", name=" + name + ", nickname=" + nickname + "]";    }}

通过代码实现链表操作

以下是链表的主要操作实现:

  • 添加节点

    • 通过遍历链表找到最后一个节点,将新节点插入到其后。
    • 如果链表为空,直接将新节点作为头节点。
  • 修改节点信息

    • 遍历链表,找到目标节点并更新其属性。
    • 如果链表为空或找不到目标节点,输出相应提示。
  • 删除节点

    • 根据节点的ID找到目标节点,并调整前后节点的指针。
    • 如果链表为空或找不到目标节点,输出相应提示。
  • 实现步骤详解

    创建链表

    DoubleLinkedList doubleLinkedList = new DoubleLinkedList();HeroNode a = new HeroNode(1, "dhl", "beyond");HeroNode d = new HeroNode(4, "dhu", "beyond");HeroNode c = new HeroNode(3, "dhp", "beyond");HeroNode b = new HeroNode(2, "dhn", "beyond");doubleLinkedList.add(a);doubleLinkedList.add(b);doubleLinkedList.add(c);doubleLinkedList.add(d);doubleLinkedList.showLinklist();

    修改节点

    HeroNode newHeroNode = new HeroNode(4, "ttt", "nothing");doubleLinkedList.updata(newHeroNode);doubleLinkedList.showLinklist();

    删除节点

    doubleLinkedList.del(3);doubleLinkedList.showLinklist();

    核心代码逻辑解析

    添加节点

    public void add(HeroNode heroNode) {    HeroNode temp = head;    while (temp.next != null) {        temp = temp.next;    }    temp.next = heroNode;    heroNode.pre = temp;}

    修改节点

    public void updata(HeroNode newHeroNode) {    if (head.next == null) {        System.out.println("链表为空~~");        return;    }    HeroNode temp = head.next;    while (temp != null) {        if (temp.id == newHeroNode.id) {            temp.name = newHeroNode.name;            temp.nickname = newHeroNode.nickname;            break;        }        temp = temp.next;    }}

    删除节点

    public void del(int id) {    if (head.next == null) {        System.out.println("链表为空");        return;    }    HeroNode temp = head.next;    while (temp != null) {        if (temp.id == id) {            temp.pre.next = temp.next;            if (temp.next != null) {                temp.next.pre = temp.pre;            }            break;        }        temp = temp.next;    }}

    链表操作示例

    创建链表

    DoubleLinkedList doubleLinkedList = new DoubleLinkedList();// 添加节点HeroNode a = new HeroNode(1, "dhl", "beyond");HeroNode b = new HeroNode(2, "dhn", "beyond");HeroNode c = new HeroNode(3, "dhp", "beyond");HeroNode d = new HeroNode(4, "dhu", "beyond");doubleLinkedList.add(a);doubleLinkedList.add(b);doubleLinkedList.add(c);doubleLinkedList.add(d);doubleLinkedList.showLinklist();

    修改节点

    HeroNode newHeroNode = new HeroNode(4, "ttt", "nothing");doubleLinkedList.updata(newHeroNode);doubleLinkedList.showLinklist();

    删除节点

    doubleLinkedList.del(3);doubleLinkedList.showLinklist();

    转载地址:http://iekk.baihongyu.com/

    你可能感兴趣的文章
    mysql 更新子表_mysql 在update中实现子查询的方式
    查看>>
    MySQL 有什么优点?
    查看>>
    mysql 权限整理记录
    查看>>
    mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
    查看>>
    MYSQL 查看最大连接数和修改最大连接数
    查看>>
    MySQL 查看有哪些表
    查看>>
    mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
    查看>>
    MySql 查询以逗号分隔的字符串的方法(正则)
    查看>>
    MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
    查看>>
    mysql 查询数据库所有表的字段信息
    查看>>
    【Java基础】什么是面向对象?
    查看>>
    mysql 查询,正数降序排序,负数升序排序
    查看>>
    MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
    查看>>
    mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
    查看>>
    mysql 死锁(先delete 后insert)日志分析
    查看>>
    MySQL 死锁了,怎么办?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 添加列,修改列,删除列
    查看>>
    mysql 添加索引
    查看>>