建立

①定义节点

public class Node{private String name;private int age;private Node nextNode;//相应的get、set方法
}

②初始化(此处使用文件信息进行初始化)
PS:我使用了一个私有属性来存储头节点(private Node headNode;)

/*** 使用文件对链表进行初始化* @param file  文件名*/
public void initLink(String file) {try {Node moveNode = null;   //移动游标BufferedReader bReader = new BufferedReader(new FileReader(new File(file)));String name = null;//遍历文件,初始化链表while((name=bReader.readLine())!= null) {Node midNode = new Node();String spiltName[] = name.split("%");midNode.setName(spiltName[0]);midNode.setAge(Integer.parseInt(spiltName[1]));//判断头节点是否为空if(this.headNode == null) {this.headNode = midNode;moveNode = this.headNode;}else {moveNode.setNextNode(midNode);moveNode = midNode;}    }//结束位置赋空moveNode.setNextNode(null);bReader.close();} catch (Exception e) {e.printStackTrace();}}

输出数据

 /*** 遍历链表,显示出所有数据*/public void showLink() {Node moveNode = this.headNode;     //使得移动游标指向头节点System.out.println("该表中所有数据为:");while(moveNode != null) {System.out.println(moveNode.getName()+"\t"+moveNode.getAge());moveNode = moveNode.getNextNode();}}

添加数据

/*** 插入数据,位于local之前* @param name   插入数据名* @param local  指定位置*/public void insertLink(String name,int age,String local) {       Node moveNode = this.headNode;//是否插到表首if(local.equals(moveNode.getName())) {Node midNode = new Node();midNode.setName(name);midNode.setAge(age);midNode.setNextNode(moveNode);//使得头指针指向新节点this.headNode = midNode;return;}//其它位置(定位到目标位置前一位)while(moveNode.getNextNode() != null) {if(!local.equals(moveNode.getNextNode().getName())) {moveNode = moveNode.getNextNode();}else {break;} }//若定位到位置,直接插入,若定位失败,在末尾插入Node midNode = new Node();midNode.setName(name);midNode.setAge(age);midNode.setNextNode(moveNode);//建立链接关系midNode.setNextNode(moveNode.getNextNode());moveNode.setNextNode(midNode);}

删除数据

/*** 删除指定的数据* @param name   定位数据* java并不需要显式的释放内存空间,因此对于要删除的数据,不给予引用回自动释放*/public void deleNode(String name) {Node moveNode = this.headNode;//若在首位if(name.equals(moveNode.getName())) {this.headNode = moveNode.getNextNode();System.out.println("删除成功");return;}//定位到要删除数据的前一位while(moveNode.getNextNode() != null) {if(name.equals(moveNode.getNextNode().getName())){//定位到数据moveNode.setNextNode(moveNode.getNextNode().getNextNode()); System.out.println("删除成功");return;}moveNode = moveNode.getNextNode();}if(moveNode.getNextNode() == null) {System.out.println("未查找到相关信息");}
}

更新数据

/*** 修改指定的数据* @param name  定位数据* @param newName 修改数据* @param age   修改数据*/public void updateLink(String name,String newName,int age){Node moveNode = this.headNode;while(moveNode != null) {if(name.equals(moveNode.getName())) {moveNode.setName(newName);moveNode.setAge(age);System.out.println("修改成功");return;}moveNode = moveNode.getNextNode();}if(moveNode == null) {System.out.println("未查询到相关信息");}}

单向链表的建立和简单的增删改查相关推荐

  1. 实现简单的增删改查(Asp.Net MVC+Layui)

    实现简单的增删改查(Asp.Net MVC+Layui) 一.页面效果 二.前期准备 1.新建项目 2. 在项目中新建文件夹(设置mvc的雏形) 3.连接数据库(SqlServer) JdbcUtil ...

  2. 微信小程序小案例——简单数据增删改查模拟

    微信小程序小案例--简单数据增删改查模拟 应同学导师之邀,要做一个微信小程序,虽然没接触过,本着不会就学的态度就接了.这里就简单记录下制作过程,方便以后自己查找.(此处是粗糙版本,练习用的数据模拟)也 ...

  3. SpringMVC_实现简单的增删改查

    实现简单的增删改查 1:创建User的javabean package com.doaoao.bean; public class User {private String name;private ...

  4. MyBatis学习--简单的增删改查

    jdbc程序 在学习MyBatis的时候先简单了解下JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 1 Public static void main(String[] arg ...

  5. mybatis学习4之使用注解开发实现简单的增删改查

    前言 使用注解完成简单的增删改查操作 本质:反射机制的体现 原理:动态代理 一.需要注意什么 1.注解在接口上实现 2.需要在核心配置文件上绑定接口,使用类绑定或者包绑定时,接口和它的Mapper配置 ...

  6. php xml 增删改查,PHP实现对xml进行简单的增删改查(CRUD)操作示例

    本文实例讲述了PHP实现对xml进行简单的增删改查(CRUD)操作.分享给大家供大家参考,具体如下: 假如有下面xml文件: 55.8 56 40 339 如何使用php对它进行CRUD?其实像这种简 ...

  7. 使用 NodeJS+Express+MySQL 实现简单的增删改查

    关于node.js暂时记录如下,以后有时间一定学习 文章来自简书,作者:sprint,2016-07 使用 Node.js + Express+MySQL 实现简单的增删改查 https://www. ...

  8. salesforce 零基础学习(五十一)使用 Salesforce.com SOAP API 实现用户登录以及简单的增删改查(JAVA访问salesforce)...

    此篇请参看:https://resources.docs.salesforce.com/202/latest/en-us/sfdc/pdf/salesforce_developer_environme ...

  9. 使用JDBC来实现一个简单的增删改查

    使用jdbc来实现一个简单的增删改查 package com.database;import java.sql.Connection; import java.sql.PreparedStatemen ...

最新文章

  1. 【备份恢复】Oracle 数据备份与恢复微实践
  2. 数字图像处理实验(5):PROJECT 04-01 [Multiple Uses],Two-Dimensional Fast Fourier Transform
  3. GDCM:gdcm::ModuleEntry的测试程序
  4. 手机qq2008触屏版_天猫精灵 CC10 电池版体验:只卖 799 元的平板电脑,比 iPad 更适合老人小孩...
  5. python出现的次数最多的元素_【Python 秘籍】序列中出现次数最多的元素
  6. 【java机器学习】贝叶斯分类
  7. 永和自适应官网代理系统模块V6.0.8
  8. python 代码命令大全-深度学习中python常用命令
  9. 《线性代数及其应用》笔记-第三章
  10. MybatisPlus自定义sql分页和分页失效问题解决
  11. 23个热门python爬虫项目,爬虫仍需谨慎,牢饭不是很香!!!
  12. Java通过图片URL把图片上传到本地服务器
  13. 清华大学 IPV6 设置
  14. 程序员加油站 -- 懂电脑更要懂人脑!继“书呆子”后又一呆子现世!
  15. Qt教程(新手入门级)
  16. 软件工程基础-个人项目-数独游戏
  17. Linux——万字总结用户与组相关知识!建议收藏!
  18. 将一张图片的人物融入另一张图片中
  19. hdu1799(用递推公式求组合的个数)
  20. 通过一个无人机代码例程学会ardunio

热门文章

  1. Go开发报错 -- Golang strings.Builder type undefined
  2. mysql 优化命令_MySQL优化Explain命令简介(一)
  3. json转python_将“true”(JSON)转换为Python等效的“True”
  4. Linxu:磁盘分区
  5. 【C语言】利用二维数组输出成绩
  6. 【C语言】找出1000以内可以被3整除的数
  7. C#LeetCode刷题之#100-相同的树(Same Tree)
  8. there are so many javascript library
  9. 这个世界上不止有Mysql,还有很多ClickHouse们
  10. Jmeter插件-dubbo