文章目录

  • 尾插法
    • 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. 单链表头插法和尾插法

    1.头插法 头插法:每次把新节点插入到头节点之后,创建的单链表和数据输入顺序相反. 防止单链表是空的而设的. 当链表为空的时候,带头结点的头指针就指向头结点,头结点的指针域存储的数值为NULL. &l ...

  2. [日常] 算法-单链表的创建-尾插法

    1.创建头结点,头结点的next指向null 2.把头结点赋值给一个中间变量 3.循环中创建结点, 中间变量的next指向新结点 4.新结点覆盖中间变量 c语言版: #include <stdi ...

  3. 线性表中的尾插法单链表的学习

    #include <stdio.h> #include <malloc.h>/*** 线性表中的尾插法单链表的学习 *//*** 人类*/ typedef struct Per ...

  4. 线性表中的尾插法双链表的学习

    #include <stdio.h> #include <malloc.h>/*** 线性表中的尾插法双链表的学习 *//*** 人类*/ typedef struct Per ...

  5. java 如何实现单链表中的头插法

    文章目录 头插法 1 思路 2 插入过程 2.1 定义node节点 2.2 将node插入到原来head前面的位置 2.3 将node节点与下一个结点链接起来 2.4 更改head的指向 3 注意点 ...

  6. C++中LIstNode尾插法建立单链表

    @yogurt_ 在做Acwing 和力扣的编程时,经常有一个节点是ListNode,这里记录一下利用已有已知结构体根据输入利用尾插法创立单链表. 经过查阅资料,理解和最后实现如下: ListNode ...

  7. c语言随机生成字母链表,C语言 尾插法建立单链表 插入26个英文字母

    C语言 尾插法建立单链表 插入26个英文字母0 uosnmzer2016.09.13浏览131次分享举报 #include #include #include /* run this program ...

  8. 162_附加145路由器项目中所用到的单链表操作_尾插、头插、遍历打印、查找ip、删除节点数据、释放全部、保存终端输入IP到文件、文件中的过滤IP插入到链表

    动图: 过滤IP的链表 #include "ip_file.h" #define ip_config_name "ip_config"//与main.c共用一个 ...

  9. 数据结构学习(二)——单链表的操作之头插法和尾插法创建链表

    http://blog.csdn.net/abclixu123/article/details/8210109 链表也是线性表的一种,与顺序表不同的是,它在内存中不是连续存放的.在C语言中,链表是通过 ...

最新文章

  1. Spring Cloud Alibaba 服务门户:Spring Cloud Gateway 如何把好微服务的大门
  2. 哈希表的实现(取余法)
  3. MATLAB实战应用案例:欧拉法、改进欧拉法、ode45求解微分方程实例
  4. 将十六进制的字符串转化为UIImage
  5. 在远程桌面在目标主机与客户机复制文件?
  6. java递归实现多级菜单栏_Java构建树形菜单以及支持多级菜单的实例代码
  7. 原python基础概念整理_python基础知识脉络梳理总结
  8. 非参数统计的Python实现—— Kruskal-Wallis 单因素方差分析
  9. RadAsm + OD 搭配编写和调试汇编程序
  10. turtle绘制八卦镜
  11. 图像的三次B样条插值原理与C++实现
  12. c盘分小了如何扩大c盘,重新分区扩大c盘
  13. ycl-django网站搭建(持续更新中)
  14. 网络与社会导论之幂律与富者更富及其与长尾、齐普夫定律等的关系
  15. Android 中app加固与瘦身
  16. 阿里 java 面试题 p6_「独家」五面阿里P6:Java开发面试题及答案
  17. 利用Photoshop对证件照换底且抠出头发丝
  18. 在Postfix邮件服务器上部署SSL证书
  19. 用友ERP-NC 目录遍历漏洞-实战
  20. 如何在Hi3559A上运行自己的YOLOv3模型

热门文章

  1. 生态圈——小组制组织结构思考
  2. 设置单选框radio不可选(禁用)
  3. 相对基址加变址寻址方式
  4. Linux CentOS7 VMware LAMP架构Apache用户认证、域名跳转、Apache访问日志
  5. 万能密码或账号登录语句
  6. 计算机网络常见的面试题(牛客网总结)
  7. asp.net 如何实现大文件断点上传功能?
  8. linux下磁盘测速工具
  9. iPhone X适配之启动图适配教程
  10. gui设计模式_GUI的完整形式是什么?