怎么用java代码实现双向链表
作者:归人云淡风轻
时间:2023-04-29
来源:互联网
浏览:0
一、双向链表简介1、单链表的缺陷单链表只能从头结点开始访问链表中的数据元素,如果需要逆序访问单链表中的数据元素将极其低效。2、双向链表的结构双链表是链表的一种,由节点组成,每个数据结点中都有两个指针,分别指向直接后继和直接前驱。3、双向链表类的基本结构classHeroNode2{//编号publicintno;//名称publicStringname;//昵称publicStringnickName;//下个节点编码publicHeroNode2next;//上一个节点publicHeroNode2pr
一、双向链表简介
1、单链表的缺陷
单链表只能从头结点开始访问链表中的数据元素,如果需要逆序访问单链表中的数据元素将极其低效。
2、双向链表的结构
双链表是链表的一种,由节点组成,每个数据结点中都有两个指针,分别指向直接后继和直接前驱。

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、双向链表的插入操作

//添加节点到单向链表
//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、双向链表的删除操作

/**
* 根据编号删除节点
* 双向链表找到对应的节点直接删除
* @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("没有对应的节点无法删除");
}
}
}
作者最新文章
荣耀MagicOS 11发布计划与Agent Harness架构解析
2026-09-08 19:23
AI重构企业业务架构:超聚变“智企”范式核心解析
2026-09-08 18:39
PDF合并工具怎么选?在线合并5步实操指南
2026-09-04 17:05
PDF图片压缩工具推荐与批量处理实操指南
2026-09-03 12:14
照片如何转成PDF格式?三种图片转PDF操作方法
2026-09-03 11:04
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多
Windows 10
Windows
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式
Windows/macOS/Linux
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















