java 如何实现单链表中的尾插法
文章目录
- 尾插法
- 1 思路
- 2 插入过程
- 2.1 定义node节点
- 2.2 定义一个cur来查找单链表的尾部位置
- 2.3 将node插入到单链表的尾部位置
- 2.4 让node结点与前一个结点连接起来
- 3 注意点
- 4 为空的情况
- 5 代码实现
尾插法
1 思路
- 先定义一个新的节点,命名为node。
- 找到尾部位置
- 将node插入到单链表的尾部位置。
- 使node指向前一个结点,也就是原表的尾部位置。
插入前的单链表:
插入后的单链表:
2 插入过程
2.1 定义node节点
2.2 定义一个cur来查找单链表的尾部位置
定义一个cur来遍历单链表,如果cur.next != null,cur就往后走,直到遇到null,停止遍历,此时cur指向的位置就是单链表尾部位置。
2.3 将node插入到单链表的尾部位置
将node结点放到尾结点的后一个节点的位置。
2.4 让node结点与前一个结点连接起来
旨在修改当前cur节点的指向,将cur的地址域中存放node的地址。
3 注意点
在遍历单链表的时候,循环的判断条件应该是cur.next != null,而不应该是cur != null。
解释:
cur.next != null 的情况
1.cur.next != null 这条语句的含义是,cur指向的结点的地址域里的地址不是null。
2.单链表结点的地址域存放的是下一个节点的地址,cur.next 正好访问到的是下一个结点的地址。
3.如果cur的地址域的地址是null,说明cur的下一个节点就是空,即cur为末尾结点。cur != null 的情况
当cur == null 的时候多遍历了一次,代码设计不合理。
4 为空的情况
如果单链表是空的,就不需要找尾结点是哪一个了,node就是第一个结点,直接让head指向node即可。
5 代码实现
//尾插法 - 插入几点到尾部
public void addEnd(int data) {//1.定义一个结点和curListNode cur = this.head;//代替head向后移动ListNode node = new ListNode(data);//新结点node//现在分两个情况:1.链表不为空,即链表的尾结点在最后一个结点处. 2.链表为空,即head就是尾结点.//2.找到尾结点 - cur指向的地址为空就是尾结点//情况2:链表为空if(cur == null) {this.head = node;//直接将头结点指向node结点}else{ //情况1:链表不为空while(cur.next != null) {cur = cur.next;//找到下一个结点}//3.此时已经找到了尾结点,可以开始将结点串联起来了cur.next = node;//cur的地址域指向node结点}
}
java 如何实现单链表中的尾插法相关推荐
- 单链表头插法和尾插法
1.头插法 头插法:每次把新节点插入到头节点之后,创建的单链表和数据输入顺序相反. 防止单链表是空的而设的. 当链表为空的时候,带头结点的头指针就指向头结点,头结点的指针域存储的数值为NULL. &l ...
- [日常] 算法-单链表的创建-尾插法
1.创建头结点,头结点的next指向null 2.把头结点赋值给一个中间变量 3.循环中创建结点, 中间变量的next指向新结点 4.新结点覆盖中间变量 c语言版: #include <stdi ...
- 线性表中的尾插法单链表的学习
#include <stdio.h> #include <malloc.h>/*** 线性表中的尾插法单链表的学习 *//*** 人类*/ typedef struct Per ...
- 线性表中的尾插法双链表的学习
#include <stdio.h> #include <malloc.h>/*** 线性表中的尾插法双链表的学习 *//*** 人类*/ typedef struct Per ...
- java 如何实现单链表中的头插法
文章目录 头插法 1 思路 2 插入过程 2.1 定义node节点 2.2 将node插入到原来head前面的位置 2.3 将node节点与下一个结点链接起来 2.4 更改head的指向 3 注意点 ...
- C++中LIstNode尾插法建立单链表
@yogurt_ 在做Acwing 和力扣的编程时,经常有一个节点是ListNode,这里记录一下利用已有已知结构体根据输入利用尾插法创立单链表. 经过查阅资料,理解和最后实现如下: ListNode ...
- c语言随机生成字母链表,C语言 尾插法建立单链表 插入26个英文字母
C语言 尾插法建立单链表 插入26个英文字母0 uosnmzer2016.09.13浏览131次分享举报 #include #include #include /* run this program ...
- 162_附加145路由器项目中所用到的单链表操作_尾插、头插、遍历打印、查找ip、删除节点数据、释放全部、保存终端输入IP到文件、文件中的过滤IP插入到链表
动图: 过滤IP的链表 #include "ip_file.h" #define ip_config_name "ip_config"//与main.c共用一个 ...
- 数据结构学习(二)——单链表的操作之头插法和尾插法创建链表
http://blog.csdn.net/abclixu123/article/details/8210109 链表也是线性表的一种,与顺序表不同的是,它在内存中不是连续存放的.在C语言中,链表是通过 ...
最新文章
- Spring Cloud Alibaba 服务门户:Spring Cloud Gateway 如何把好微服务的大门
- 哈希表的实现(取余法)
- MATLAB实战应用案例:欧拉法、改进欧拉法、ode45求解微分方程实例
- 将十六进制的字符串转化为UIImage
- 在远程桌面在目标主机与客户机复制文件?
- java递归实现多级菜单栏_Java构建树形菜单以及支持多级菜单的实例代码
- 原python基础概念整理_python基础知识脉络梳理总结
- 非参数统计的Python实现—— Kruskal-Wallis 单因素方差分析
- RadAsm + OD 搭配编写和调试汇编程序
- turtle绘制八卦镜
- 图像的三次B样条插值原理与C++实现
- c盘分小了如何扩大c盘,重新分区扩大c盘
- ycl-django网站搭建(持续更新中)
- 网络与社会导论之幂律与富者更富及其与长尾、齐普夫定律等的关系
- Android 中app加固与瘦身
- 阿里 java 面试题 p6_「独家」五面阿里P6:Java开发面试题及答案
- 利用Photoshop对证件照换底且抠出头发丝
- 在Postfix邮件服务器上部署SSL证书
- 用友ERP-NC 目录遍历漏洞-实战
- 如何在Hi3559A上运行自己的YOLOv3模型