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

本文共 3480 字,大约阅读时间需要 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/

    你可能感兴趣的文章
    Objective-C实现DoublyLinkedList双链表算法(附完整源码)
    查看>>
    Objective-C实现DPLL(davisb putnamb logemannb loveland)算法(附完整源码)
    查看>>
    Objective-C实现Edmonds-Karp算法(附完整源码)
    查看>>
    Objective-C实现EEMD算法(附完整源码)
    查看>>
    Objective-C实现EM算法(附完整源码)
    查看>>
    Objective-C实现EM算法(附完整源码)
    查看>>
    Objective-C实现entropy熵算法(附完整源码)
    查看>>
    Objective-C实现euclidean distance欧式距离算法(附完整源码)
    查看>>
    Objective-C实现Euclidean GCD欧几里得最大公约数算法(附完整源码)
    查看>>
    Objective-C实现euclideanDistance欧氏距离算法(附完整源码)
    查看>>
    Objective-C实现euler method欧拉法算法(附完整源码)
    查看>>
    Objective-C实现eulerianPath欧拉路径算法(附完整源码)
    查看>>
    Objective-C实现EulersTotient欧拉方程算法(附完整源码)
    查看>>
    Objective-C实现eval函数功能(附完整源码)
    查看>>
    Objective-C实现even_tree偶数树算法(附完整源码)
    查看>>
    Objective-C实现Exceeding words超词(差距是ascii码的距离) 算法(附完整源码)
    查看>>
    Objective-C实现extended euclidean algorithm扩展欧几里得算法(附完整源码)
    查看>>
    Objective-C实现Factorial digit sum阶乘数字和算法(附完整源码)
    查看>>
    Objective-C实现factorial iterative阶乘迭代算法(附完整源码)
    查看>>
    Objective-C实现factorial recursive阶乘递归算法(附完整源码)
    查看>>