当前位置: 首页 > news >正文

java中的链表类_6.JAVA-链表实例

/*节点类*/

classNode

{private String data; //节点保存的数据

private Node next; //下个节点

publicNode(String data){this.data =data;

}publicString getData()

{returndata;

}public voidsetData(String data)

{this.data =data;

}publicNode getNext()

{returnnext;

}public voidsetNext(String data)

{this.next = newNode(data);

}/*Description: 添加节点

*return :*/

public voidaddNode(String data)

{if(getNext()!=null)

{this.next.addNode(data);

}else{this.setNext(data);

}

}/*Description: 获取节点数据

*return :*/

public String getData(intindex)

{

String ret=null;if(index == 0) //如果递归到0,则返回当前数据

{

ret=data;

}else //否则继续递归查找

{

ret=this.next.getData(--index);

}returnret;

}/*Description: 递归地查找data位于链表哪个序号

*return : -1(表示未找到)*/

public int findIndex(String data,intindex)

{if(this.data.equals(data)) //已找到

{returnindex;

}else if (getNext()==null) //未找到

{return -1;

}return this.next.findIndex(data,++index);

}/*Description: 递归地查找data,并删除

*data: 要找的data

*PreNode: 上个节点,如果为null则当前位于表头

*index: 表示当前位于链表哪个序号

*return : -1(表示未找到) 0~(len-1) (表示data位于链表哪个序号)*/

public int delData(String data,Node PreNode,intindex)

{int ret = -1;if(this.data.equals(data)) //删除

{

PreNode.next= this.next;returnindex;

}else if (getNext()==null) //未找到

{returnret;

}return this.next.delData(data,this,++index);

}

}/*链表类*/

classLinkList

{private Node next; //负责管理的节点

private int len; //统计节点长度

publicLinkList(String data)

{

next= newNode(data);

len=1;

}/*Description: 添加一个节点数据

*return :*/

public voidaddData(String data)

{this.next.addNode(data);

len++;

}/*Description: 删除一个节点数据

*return : -1(未找到要删除的数据) 0~(len-1) (表示data位于链表哪个序号)*/

public intdelData(String data)

{int ret=-1;if(len>=0) //链表有数据

{if(this.next.getData().equals(data)) //删除表头需要特殊处理

{this.next = this.next.getNext();

ret= 0;

}elseret= next.delData(data,this.next,1);

}if(ret!= -1) //已删除

{

len--;

}returnret;

}/*Description: 根据index找到对应的节点数据

*return : 返回节点数据*/

public String getNodeData(intindex)

{

String ret=null;if(index>=0 && index

{

ret=next.getData(index);

}returnret;

}/*Description: 根据data查找节点Node位于链表哪个序号

*return : -1(表示未找到) 0~(len-1) (表示data位于链表哪个序号)*/

public intfindNodeIndex(String data)

{int ret=-1;if(len>=0) //链表有数据

{

ret= next.findIndex(data,0); //从序号0开始找

}returnret;

}/*Description: 将链表中所有的节点数据转为数组

*return :*/

publicString[] toArrays()

{

Node tmp=this.next;

String[] arr= newString[len];for(int i=0; i< len; i++)

{

arr[i]=tmp.getData();

tmp=tmp.getNext();

}returnarr;

}public intlength()

{returnlen;

}

}

相关文章:

  • java 二分查找 简书_二分查找的三种模板(C++,Java,Python)
  • 用java实现矩阵链乘积_矩阵最优链乘及Java实现
  • java泛型 语法_Java泛型中的? super T语法
  • java 模块化 组件化_关于模块化、组件化的理解
  • java isnull方法_Java 检查判断变量null(空值)的方法示例代码
  • java容器类的实现_java容器类总结——基于JDK1.8
  • MySQL实验7存储过程_存储过程 · MySQL5.7文档 · 看云
  • php mysql insert 默认_PHP MySQL Insert Into
  • 称重机 java_Java实现称重3次找到假球
  • triangle java_LeetCode Triangle Java版本
  • python用户重复输入_在Python中从用户输入中查找重复值
  • java类与类之间的类图_UML类图(Class Diagram)中类与类之间的关系及表示方式(转)
  • java按时间范围过滤_Java列表按日期过滤
  • java员工表代码_基于java+ssh员工考勤管理系统源代码
  • java返回指定json格式_java返回json格式数据
  • Angular 响应式表单 基础例子
  • java8 Stream Pipelines 浅析
  • JS变量作用域
  • Python十分钟制作属于你自己的个性logo
  • SQLServer之创建数据库快照
  • Vue--数据传输
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 记一次和乔布斯合作最难忘的经历
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 我的zsh配置, 2019最新方案
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • elasticsearch-head插件安装
  • 阿里云服务器如何修改远程端口?
  • ​第20课 在Android Native开发中加入新的C++类
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (zt)最盛行的警世狂言(爆笑)
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (一)python发送HTTP 请求的两种方式(get和post )
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET Core Web APi类库如何内嵌运行?
  • .Net 知识杂记
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET中 MVC 工厂模式浅析
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • :O)修改linux硬件时间
  • @ModelAttribute 注解
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [20190113]四校联考
  • [bbk5179]第66集 第7章 - 数据库的维护 03
  • [BT]BUUCTF刷题第8天(3.26)
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [bzoj4010][HNOI2015]菜肴制作_贪心_拓扑排序
  • [CareerCup] 2.1 Remove Duplicates from Unsorted List 移除无序链表中的重复项
  • [DL]深度学习_Feature Pyramid Network
  • [HNOI2018]排列