单向链表的修改和删除操作

  • 单向链表的修改
  • 单向链表的删除

单向链表的修改

在上面的代码基础上定义几个英雄

HeroNode hero1 = new HeroNode(1,"宋江","及时雨");
HeroNode hero2 = new HeroNode(2,"卢俊义","玉麒麟");
HeroNode hero3 = new HeroNode(3,"吴用","智多星");
HeroNode hero4 = new HeroNode(4,"林冲","豹子头");
HeroNode hero5 = new HeroNode(5,"李逵","李鬼");

我们用顺序的插入

singleLinkedList.addByOrder(hero1);
singleLinkedList.addByOrder(hero4);
singleLinkedList.addByOrder(hero2);
singleLinkedList.addByOrder(hero3);
singleLinkedList.addByOrder(hero5);

插入成功

然而我们发现李逵别名不是李鬼,我们要对其进行修改
我们再次定义对的Hero

HeroNode hero6 = new HeroNode(5,"李逵","黑旋风");

我们编写update()方法

    public void updateHero(HeroNode newHeroNode){if(head.next == null){System.out.println("链表为空");return;}HeroNode temp = head.next;boolean flag = false; //表示是否找到节点while(true){if(temp ==  null){break;//遍历完了链表}if(temp.no == newHeroNode.no){//find itflag = true;break;}temp = temp.next;}if(flag){temp.name = newHeroNode.name;temp.nickName = newHeroNode.nickName;} else  {System.out.printf("Can't find Hero what no is %d ", newHeroNode.no);}}
}

再main方法中加入update()

我们在插入李鬼后,再去修改,运行程序

我们发现李鬼已经改为了黑旋风。

单向链表的删除

思路分析

先找到需要删除的节点的前一个节点;
temp.next = temp.next.next
被删除的节点,将不会有其他引用指向,会被垃圾回收机制回收

编写方法deleteHero

//删除节点
public void deleteHero(int no){if(head.next == null){return;}HeroNode temp = head.next;boolean flag = false;while (true){if(temp.next == null){System.out.println("已经遍历完");break;}if(temp.next.no == no){flag = true;break;}temp = temp.next;}if(flag){temp.next = temp.next.next;}else {System.out.printf("The hero you input %d could not be found",no);}
}

在主方法中加入删除方法,我们删除5号

singleLinkedList.deleteHero(5);

运行结果

我们发现李逵已经不见了

数据结构与算法-单向链表的修改和删除操作相关推荐

  1. Java数据结构与算法 day02 链表

    文章目录 第三章 链表 单链表介绍和内存布局 单链表创建和遍历的分析实现 添加(创建)过程 遍历过程 代码实现 单链表按顺序插入节点 单链表节点的修改 单链表节点的删除和小结 单链表面试题 新浪面试题 ...

  2. 数据结构与算法 内核链表实现商品购物系统项目+Makefile

    数据结构与算法 内核链表实现商品购物系统项目 第一章 项目实现思维 [1]编译介绍 [2]框架思维 第二章 Makefile编写 第三章 代码编写实现 [1]favorite.txt文件 [2]his ...

  3. 一文通数据结构与算法之——链表+常见题型与解题策略+Leetcode经典题

    文章目录 1 链表 1.1 常见题型及解题策略 1.1.1 LeetCode中关于链表的题目有以下五种类型题: 1.1.2 解题策略 1.2 链表的基本内容 1.2.1 链表的基本结构: 1.2.2 ...

  4. python定义链表节点_Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】...

    本文实例讲述了Python数据结构与算法之链表定义与用法.分享给大家供大家参考,具体如下: 本文将为大家讲解: (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和 ...

  5. 数据结构与算法之链表结构寻找p、q最近的公共祖先

    链表结构,寻找p.q最近的公共祖先 数据结构与算法之链表结构寻找p.q最近的公共祖先 链表结构,寻找p.q最近的公共祖先 问题 想法 代码 问题 设一棵二叉树的结点结构为(LLINK, INFO, R ...

  6. 数据结构与算法--单链表相关面试题

    此文章仅作为自己学习过程中的记录和总结,同时会有意地去用英文来做笔记,一些术语的英译不太准确,内容如有错漏也请多指教,谢谢! 一.概述 获取单链表的有效元素个数[新浪面试题1] 获取单链表倒数第k个结 ...

  7. c++ 链表_链表(单向链表的建立、删除、插入、打印)

    线性结构:有且只有一个根节点,且每个节点最多有一个直接前驱和一个直接后继的非空数据结构 非线性结构:不满足线性结构的数据结构 链表(单向链表的建立.删除.插入.打印) 1.链表一般分为: 单向链表 双 ...

  8. ASP.NET XML读取、增加、修改和删除操作

    C#-XML读取.增加.修改和删除操作 1.xml文件格式如下: <?xml version="1.0" encoding="utf-8"?> &l ...

  9. Sql中存储过程的定义、修改和删除操作

    Sql中存储过程的定义.修改和删除操作 1.存储过程的分类 系统存储过程 本地存储过程(用户自定义) 临时存储过程(局部[#].全局[##]临时存储过程) 2.创建存储过程 ? 1 2 3 4 5 6 ...

最新文章

  1. 初级Java程序员所面临的4大挑战
  2. 卷积神经网络性能优化
  3. Know more about RAC statistics and wait event
  4. 告别编译运行 ---- Android Studio 2.0 Preview发布Instant Run功能
  5. python numpy中stack(),hstack(),vstack()函数解释
  6. android 北斗定位代码_大牛三步教你解决,BAT资深APP性能优化系列-卡顿定位问题,收藏哦
  7. povray[1] = 天空
  8. angular路由传递参数_在angular4.0路由传递获取参数的最优方案
  9. 如何优雅地管理C++ 中的内存
  10. 医疗健康领域的短文本解析探索----文本纠错
  11. 解决stackoverflow加载慢的插件
  12. java sqlserver数据库连接_JAVA连接SQLserver数据库
  13. 超级全面的iOS资源
  14. 中控指纹仪linux驱动下载,中控uru4500指纹仪驱动
  15. 三角学常见公式定理证明
  16. 基于JSP(java)网络百宝箱的设计和实现(含源文件)
  17. P1478 陶陶摘苹果(升级版)(C++_贪心)
  18. 启动tomcat出来两个窗口 NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-
  19. 文本转拼音 麦谈帮API数据接口
  20. mysql 自顶向下递归查询 使用next字段查子集 单链表查询

热门文章

  1. 用法律来索取离职证明
  2. 卡巴斯基U盘插入扫描策略
  3. 矩阵连乘求最小连乘次数(动态规划)
  4. 2021最漂亮的5张可视化图
  5. IP数据包 标识 标志 片偏移
  6. 从服务器上下载文件的方法
  7. 2015年移动领域发展的九大趋势
  8. 过电流继电器怎么正确选型
  9. 区块链在能源领域落地?可自己发电卖给邻居
  10. 想入门网络安全?先来看看网络安全行业人才需求!