如何避免单链表无顺序添加时节点对象形成封闭环,导致无法添加相同对象且遍历输出陷入无限循环?

2026-04-20 02:011阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计286个文字,预计阅读时间需要2分钟。

如何避免单链表无顺序添加时节点对象形成封闭环,导致无法添加相同对象且遍历输出陷入无限循环?

对对象是否相同的判断,创建辅助节点temp,遍历链表,找到最后一个节点。将temp后移,当退出while循环时,temp指向了链表的最后一个节点。判断add节点是否存在,若存在则不添加,若不存在则添加最后一个节点。

1 进行对象是否相同的判断

  • 创建辅助节点temp
  • 遍历链表,找到最后
  • 未到最后,将temp后移
  • 当退出while循环时,temp就指向了链表的最后
  • 判断add的节点对象是否存在,若存在则不添加
  • 将最后这个节点的next 指向新的节点
  • public void add(HeroNode heroNode) { //创建辅助节点 HeroNode temp = head; //遍历链表,找到最后 while (true) { if (temp.next == null) {// break; } //未到最后,将temp后移 temp = temp.next; } //当退出while循环时,temp就指向了链表的最后 //判断add的节点对象是否存在,若存在则不添加 if (temp == heroNode) { System.out.println("插入的节点对象已经存在"); } else { //将最后这个节点的next 指向新的节点 temp.next = heroNode; } }

    2 重写节点类里的equals方法

    重写节点类里的equals方法,则相同内容的不同节点对象也无法添加

    如何避免单链表无顺序添加时节点对象形成封闭环,导致无法添加相同对象且遍历输出陷入无限循环?

    本文共计286个文字,预计阅读时间需要2分钟。

    如何避免单链表无顺序添加时节点对象形成封闭环,导致无法添加相同对象且遍历输出陷入无限循环?

    对对象是否相同的判断,创建辅助节点temp,遍历链表,找到最后一个节点。将temp后移,当退出while循环时,temp指向了链表的最后一个节点。判断add节点是否存在,若存在则不添加,若不存在则添加最后一个节点。

    1 进行对象是否相同的判断

  • 创建辅助节点temp
  • 遍历链表,找到最后
  • 未到最后,将temp后移
  • 当退出while循环时,temp就指向了链表的最后
  • 判断add的节点对象是否存在,若存在则不添加
  • 将最后这个节点的next 指向新的节点
  • public void add(HeroNode heroNode) { //创建辅助节点 HeroNode temp = head; //遍历链表,找到最后 while (true) { if (temp.next == null) {// break; } //未到最后,将temp后移 temp = temp.next; } //当退出while循环时,temp就指向了链表的最后 //判断add的节点对象是否存在,若存在则不添加 if (temp == heroNode) { System.out.println("插入的节点对象已经存在"); } else { //将最后这个节点的next 指向新的节点 temp.next = heroNode; } }

    2 重写节点类里的equals方法

    重写节点类里的equals方法,则相同内容的不同节点对象也无法添加

    如何避免单链表无顺序添加时节点对象形成封闭环,导致无法添加相同对象且遍历输出陷入无限循环?