62,628
社区成员
发帖
与我相关
我的任务
分享public class TestDemo {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Linkk lin = new Linkk () ;
lin.add("车厢1");
lin.add("车厢2");
lin.add("车厢3");
lin.add("车厢4");
System.out.println(lin.get(0));
}
}
class Linkk {
//-----------------------------
//封装一个内部类,操作每个节点关系
private class Node {
//定义节点储存的数据
private Object data ;
//定义节点关系
private Node next ;
//通过构造方法,为储存的数据赋值
public Node(Object data) {
this.data = data ;
}
//递归操作为外部每一次传入的数据依次放在节点上
public void chuCun (Node shuJu) {
//第一次执行时外部的root调用,传入的是第二次调用add方法的数据
if (this.next == null) {
this.next = shuJu ;
}
//如果this.next不为空,即前面的节点已经储存了数据,则递归调用,直到找到this.next为空的情况
else {
this.next.chuCun(shuJu);
}
}
//利用递归取得每个索引的数据
public Object getData(int index) {
//第一次调用是根节点数据调用
if (Linkk.this.foot ++ == index ) {
return this.data ;
}else {
//如果第一次即根节点的索引和传入的查找索引不匹配,就递归调用,继续往后查找,直到查找到或者没有
this.next.getData(index) ;
}//没有的话返回空
return null ;
}
}
//------------------------------
//设置根节点
private Node root ;
//设置链表长度
private int count = 0 ;
//为传入的每个节点数据设置角标
private int foot ;
//通过add方法传入要储存的数据
public void add (Object data) {
//实例化Node类的data属性,方便访问
Node shuJu = new Node (data) ;
//如果根节点上没储存数据,则把第一次外部调用传入的数据放在根节点上
if (this.root == null) {
this.root = shuJu ;
}
//为根节点储存数据后,为后面的节点储存数据,节点间的关系需要在Node类中有递归完成
else {
//根节点数据调用chuCun方法传入第二次传入的数据
this.root.chuCun(shuJu);
}
//每调用依次,链表的长度就加一次
this.count ++ ;
}
//建立取出指定索引的方法,依旧是根节点去利用递归调用
public Object get(int index) {
//传入的要查找的索引不能大于等于链表的长度
if (index >= this.count) {
return null ;
}else {
foot = 0 ;
return this.root.getData(index);
}
}
}System.out.println(lin.get(0));输出正常,而System.out.println(lin.get(1)); 传入的值是1以及更大的数组,全部输出都是null呢?


public Object getData(int index)
{
// index和当前节点foot匹配
if (Linkk.this.foot++ == index)
{
return this.data;
}
return this.next.getData(index);
}