首页> Java> java教程> 正文

怎么用java代码实现双向链表

王林
发布: 2023-05-02 23:49:05
转载
1427 人浏览过

一、双向链表简介

1、单链表的缺陷

单链表只能从头结点开始访问链表中的数据元素,如果需要逆序访问单链表中的数据元素将极其低效。

2、双向链表的结构

双链表是链表的一种,由节点组成,每个数据结点中都有两个指针,分别指向直接后继和直接前驱。

怎么用java代码实现双向链表

3、双向链表类的基本结构

class HeroNode2 { //编号 public int no; //名称 public String name; //昵称 public String nickName; //下个节点编码 public HeroNode2 next; //上一个节点 public HeroNode2 pre; public HeroNode2(int no, String name, String nickName) { this.no = no; this.name = name; this.nickName = nickName; } public HeroNode2(int no, String name) { this.no = no; this.name = name; } @Override public String toString() { return "HeroNode{" + "no=" + no + ", name='" + name + '\'' + ", nickName='" + nickName + '\'' + '}'; } }
登录后复制

二、双向链表的操作

1、双向链表的插入操作

怎么用java代码实现双向链表

//添加节点到单向链表 //1. 找到当前链表的最后节点 //2. 将最后这个节点的next指定新节点 public void add(HeroNode2 heroNode) { //因为head节点不能动,所以需要一个辅助变量temp HeroNode2 temp = head; while (true) { //根据是否有下个节点判断 是否到了链表动最后 if (temp.next == null) { break; } //如果没有找到最后 temp后移 temp = temp.next; } //当退出循环时,temp就指向了链表的最后位置 //当最后这个节点的next 指向新的节点 //新节点的上一个节点指向temp temp.next = heroNode; heroNode.pre = temp; }
登录后复制

2、双向链表的删除操作

怎么用java代码实现双向链表

/** * 根据编号删除节点 * 双向链表找到对应的节点直接删除 * @param no 节点编号 */ public void deleteByNo(int no) { //判断是否链表为空 if (head.next == null) { System.out.println("链表为空"); return; } HeroNode2 temp = head; //设置标识 boolean flag = false; while (true) { //已经遍历到链表尾 if (temp == null) { break; } //找到修改节点的上一个节点 if (temp.no == no) { flag = true; break; } temp = temp.next; } //找到对应的节点 if (flag) { //找到要删除节点的上一个节点 将删除节点的下一个节点 绑定为中间变量的下一个节点 temp.pre.next=temp.next; if (temp.next!=null){ temp.next.pre=temp.pre; } } else { System.out.println("没有对应的节点无法删除"); } } }
登录后复制

以上是怎么用java代码实现双向链表的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:yisu.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!