有关link的问题

问题描述

有下面一段代码,请大家看看:是关于Link的,在这段代码中,定义了一个Link,在Link中有存数据的data变量,和指向下一个node的变量next.在加入所有数据“A,B,C,D,E"到link中后,link类的data保存的为何值?大家可以看到,调用print方法后,publicvoidprint(){System.out.print(this.data+"t");//输出节点内容if(this.next!=null){//还有下一个元素,需要继续输出this.next.print();//下一个节点继续调用print}}我用黄色标记出来了,this.data中的数据为root数据,之后依次读取接下来的数据。从此可以看出,每次用this.data的时候,this.data中的内容都是root中的内容。为什么呢?为什么用data中内容都是defaultroot中的内容呢?在使用到其他方法如contains,delete也是一样,this.data都是从root开始的,一个一个搜索下去的。为什么?classLink{//链表的完成类classNode{//保存每一个节点,此处为了方便直接定义成内部类privateStringdata;//保存节点的内容privateNodenext;//保存下一个节点publicNode(Stringdata){this.data=data;//通过构造方法设置节点内容}publicvoidadd(NodenewNode){//将节点加入到合适的位置if(this.next==null){//如果下一个节点为空,则把新节点设置在next的位置上this.next=newNode;}else{//如果不为空,则需要向下继续找nextthis.next.add(newNode);}}publicvoidprint(){System.out.print(this.data+"t");//输出节点内容if(this.next!=null){//还有下一个元素,需要继续输出this.next.print();//下一个节点继续调用print}}publicbooleansearch(Stringdata){//内部搜索的方法if(data.equals(this.data)){//判断输入的数据是否和当前节点的数据一致returntrue;}else{//向下继续判断if(this.next!=null){//下一个节点如果存在,则继续查找returnthis.next.search(data);//返回下一个的查询结果}else{returnfalse;//如果所有的节点都查询完之后,没有内容相等,则返回false}}}publicvoiddelete(Nodeprevious,Stringdata){if(data.equals(this.data)){//找到了匹配的节点previous.next=this.next;//空出当前的节点}else{if(this.next!=null){//还是存在下一个节点this.next.delete(this,data);//继续查找}}}};privateNoderoot;//链表中必然存在一个根节点publicvoidaddNode(Stringdata){//增加节点NodenewNode=newNode(data);//定义新的节点if(this.root==null){//没有根节点this.root=newNode;//将第一个节点设置成根节点}else{//不是根节点,放到最后一个节点之后this.root.add(newNode);//通过Node自动安排此节点放的位置}}publicvoidprintNode(){//输出全部的链表内容if(this.root!=null){//如果根元素不为空this.root.print();//调用Node类中的输出操作}}publicbooleancontains(Stringname){//判断元素是否存在returnthis.root.search(name);//调用Node类中的查找方法}publicvoiddeleteNode(Stringdata){//删除节点if(this.contains(data)){//判断节点是否存在//一定要判断此元素现在是不是根元素相等的if(this.root.data.equals(data)){//内容是根节点this.root=this.root.next;//修改根节点,将第一个节点设置成根节点}else{this.root.next.delete(root,data);//把下一个节点的前节点和数据一起传入进去}}}};publicclassLinkDemo02{publicstaticvoidmain(Stringargs[]){Linkl=newLink();l.addNode("A");//增加节点l.addNode("B");//增加节点l.addNode("C");//增加节点l.addNode("D");//增加节点l.addNode("E");//增加节点System.out.println("=======删除之前========");l.printNode();//System.out.println(l.contains("X"));l.deleteNode("C");//删除节点l.deleteNode("D");//删除节点l.deleteNode("A");//删除节点System.out.println("n======删除之后=========");l.printNode();System.out.println("n查询节点:"+l.contains("B"));}};

解决方案

解决方案二:
这里面有两个类,LZ要先明白其中的关系this.data这个是在Node类里,其中的this代表当前Node,当前的Node为root时,先打印root的data,然后继续递归调用this.next.print,此时会再次进入print方法,这时的this就不再是root了,是root的下一个Node,也就是之前的this.nextcontains,delete方法是在Link类里,该类需要一个root,所以开始时就定义一个变量privateNoderoot;//链表中必然存在一个根节点这样每次查找获删除时都是从该根节点开始

时间: 2024-09-20 18:27:44

有关link的问题的相关文章

link环境下制作一款《订餐软件》,定时配送的功能怎么实现?使用定时器还是什么?

问题描述 link环境下制作一款<订餐软件>,定时配送的功能怎么实现?使用定时器还是什么? link环境下制作一款<订餐软件>,定时配送的功能怎么实现?使用定时器还是什么? 解决方案 这个可以使用quartz.net http://blog.csdn.net/gavin_luo/article/details/12758973

link中通过发射可以得到函数地址,这是什么意思?那是怎么得到的地址?

问题描述 link中通过发射可以得到函数地址,这是什么意思?那是怎么得到的地址? link中通过发射可以得到函数地址,这是什么意思?那是怎么得到的地址? 解决方案 函数是一段代码,函数的地址就是这段代码开始的地方.

配置- hive Communications link failure

问题描述 hive Communications link failure 在hive链接mysql作为数据源的过程中,配置conf下的hive-site.xml 文件,hive是装在Hadoop集群的master上,ip地址是192.168.1.154.mysql直接使用的sudo apt-get install mysql-server 安装的.使用netstat -nat 显示: 结果如下:然后我的hive 配置文件是:把ip地址换成localhost或者127.0.0.1 hive下 s

link中使用动态算子实现排序的机制是什么,怎么样能优化?

问题描述 link中使用动态算子实现排序的机制是什么,怎么样能优化? link中使用动态算子实现排序的机制是什么,怎么样能优化? 解决方案 使用dynamic其实是运行时反射,要想效率高,用查询表达式,google MakeMemberAccess LINQ

link环境下制作一款《订餐软件》,请问延迟发货的定时器和定时发货的定时器的区隔怎么实现?

问题描述 link环境下制作一款<订餐软件>,请问延迟发货的定时器和定时发货的定时器的区隔怎么实现? link环境下制作一款<订餐软件>,请问延迟发货的定时器和定时发货的定时器的区隔怎么实现? 解决方案 这个可以使用quartz.net http://blog.csdn.net/gavin_luo/article/details/12758973

link环境下制作一款《订餐软件》,请问定时发货的实现,如何多个定时器编程?

问题描述 link环境下制作一款<订餐软件>,请问定时发货的实现,如何多个定时器编程? link环境下制作一款<订餐软件>,请问定时发货的实现,如何多个定时器编程? 解决方案 这个可以使用quartz.net http://blog.csdn.net/gavin_luo/article/details/12758973

link环境下制作一款《订餐软件》,会员菜肴配送,实现对接通讯录短信通知怎么实现?

问题描述 link环境下制作一款<订餐软件>,会员菜肴配送,实现对接通讯录短信通知怎么实现? link环境下制作一款<订餐软件>,会员菜肴配送,实现对接通讯录短信通知怎么实现? 解决方案 买个短信猫.自己通过短信猫来发短信什么的.要不就买第三方的短信接口或者运营商的短信接口,需要一定的费用 解决方案二: 要发短信的话,是要跟运营商申请短信接口的,还挺贵的得上万,节省成本的话建议可以用飞信或者是微信来发信息.

link环境下制作一款《订餐软件》,请问如何对定时发货做定时器归零?

问题描述 link环境下制作一款<订餐软件>,请问如何对定时发货做定时器归零? link环境下制作一款<订餐软件>,请问如何对定时发货做定时器归零? 解决方案 在你的数据库中记录下发货时间,使用触发器,到了时间就对数据清零处理.

link环境下制作一款《订餐软件》,请问如何设置自动并库自动导库的功能组合?

问题描述 link环境下制作一款<订餐软件>,请问如何设置自动并库自动导库的功能组合? link环境下制作一款<订餐软件>,请问如何设置自动并库自动导库的功能组合? 解决方案 这些可以用一个windows服务程序来实现定时的操作.

link环境下制作一款《订餐软件》,在线订餐怎么直接实现在线付款功能呢?

问题描述 link环境下制作一款<订餐软件>,在线订餐怎么直接实现在线付款功能呢? link环境下制作一款<订餐软件>,在线订餐怎么直接实现在线付款功能呢? 解决方案 自己找第三方的支付,一般都会有api使用说明的,但是也需要手续费什么的