数据结构与算法-单向链表的修改和删除操作
单向链表的修改和删除操作
- 单向链表的修改
- 单向链表的删除
单向链表的修改
在上面的代码基础上定义几个英雄
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);
运行结果
我们发现李逵已经不见了
数据结构与算法-单向链表的修改和删除操作相关推荐
- Java数据结构与算法 day02 链表
文章目录 第三章 链表 单链表介绍和内存布局 单链表创建和遍历的分析实现 添加(创建)过程 遍历过程 代码实现 单链表按顺序插入节点 单链表节点的修改 单链表节点的删除和小结 单链表面试题 新浪面试题 ...
- 数据结构与算法 内核链表实现商品购物系统项目+Makefile
数据结构与算法 内核链表实现商品购物系统项目 第一章 项目实现思维 [1]编译介绍 [2]框架思维 第二章 Makefile编写 第三章 代码编写实现 [1]favorite.txt文件 [2]his ...
- 一文通数据结构与算法之——链表+常见题型与解题策略+Leetcode经典题
文章目录 1 链表 1.1 常见题型及解题策略 1.1.1 LeetCode中关于链表的题目有以下五种类型题: 1.1.2 解题策略 1.2 链表的基本内容 1.2.1 链表的基本结构: 1.2.2 ...
- python定义链表节点_Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】...
本文实例讲述了Python数据结构与算法之链表定义与用法.分享给大家供大家参考,具体如下: 本文将为大家讲解: (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计 (2)链表类插入和 ...
- 数据结构与算法之链表结构寻找p、q最近的公共祖先
链表结构,寻找p.q最近的公共祖先 数据结构与算法之链表结构寻找p.q最近的公共祖先 链表结构,寻找p.q最近的公共祖先 问题 想法 代码 问题 设一棵二叉树的结点结构为(LLINK, INFO, R ...
- 数据结构与算法--单链表相关面试题
此文章仅作为自己学习过程中的记录和总结,同时会有意地去用英文来做笔记,一些术语的英译不太准确,内容如有错漏也请多指教,谢谢! 一.概述 获取单链表的有效元素个数[新浪面试题1] 获取单链表倒数第k个结 ...
- c++ 链表_链表(单向链表的建立、删除、插入、打印)
线性结构:有且只有一个根节点,且每个节点最多有一个直接前驱和一个直接后继的非空数据结构 非线性结构:不满足线性结构的数据结构 链表(单向链表的建立.删除.插入.打印) 1.链表一般分为: 单向链表 双 ...
- ASP.NET XML读取、增加、修改和删除操作
C#-XML读取.增加.修改和删除操作 1.xml文件格式如下: <?xml version="1.0" encoding="utf-8"?> &l ...
- Sql中存储过程的定义、修改和删除操作
Sql中存储过程的定义.修改和删除操作 1.存储过程的分类 系统存储过程 本地存储过程(用户自定义) 临时存储过程(局部[#].全局[##]临时存储过程) 2.创建存储过程 ? 1 2 3 4 5 6 ...
最新文章
- 初级Java程序员所面临的4大挑战
- 卷积神经网络性能优化
- Know more about RAC statistics and wait event
- 告别编译运行 ---- Android Studio 2.0 Preview发布Instant Run功能
- python numpy中stack(),hstack(),vstack()函数解释
- android 北斗定位代码_大牛三步教你解决,BAT资深APP性能优化系列-卡顿定位问题,收藏哦
- povray[1] = 天空
- angular路由传递参数_在angular4.0路由传递获取参数的最优方案
- 如何优雅地管理C++ 中的内存
- 医疗健康领域的短文本解析探索----文本纠错
- 解决stackoverflow加载慢的插件
- java sqlserver数据库连接_JAVA连接SQLserver数据库
- 超级全面的iOS资源
- 中控指纹仪linux驱动下载,中控uru4500指纹仪驱动
- 三角学常见公式定理证明
- 基于JSP(java)网络百宝箱的设计和实现(含源文件)
- P1478 陶陶摘苹果(升级版)(C++_贪心)
- 启动tomcat出来两个窗口 NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-
- 文本转拼音 麦谈帮API数据接口
- mysql 自顶向下递归查询 使用next字段查子集 单链表查询