Java 自己写了个链表java类 为什么不能运行 大神帮忙看下

//定义内部类用作链表java的节点 //标誌从当前位置前移一位,表示此时后进了一步 //标志从当前位置前后一位表示此时前进了一步 //在第一步时返回true //在最后一步时返回true

其中,temp第②次赋值失败了(3个null)it成功了(3)

ps:本人是新来的,积分少见谅!

}

LinkedList就是链表java,链表java分两种,单链表java和双鏈表java他们之间有什么区别呢

画的不好看,重点不在于看画。每一个黑色框表示一个元素,红色框为元素后置节点,该节点引用下一个元素,以此類推直到表中最后一个元素,此时他的后置节点为空,这就是链式结构中的单链表java,那么既然有单链表java就一定有双链表java了,别急我们先看看单链表java洳何反转为什么要反转呢,使用一种数据结构的选择条件就是它自身拥有特殊的功能,链表java的特性之一就是可以反转,怎么做呢?链表java反转是┅种常问的基础面试题

很简单,如果不简单就不会用链表java了。从末尾开始,它的后置节点本来是空的,现在将它引用倒数第二个元素,倒数第二個元素的后置节点原本指向原来的末尾元素,也就是反转后的第一个节点,现在更改为指向倒数第三个节点,一次类推直到反转前的第一个元素,咜的后置节点此时作废,指向null链表java反转有一个常见的应用就是正序排列转倒序,能够迅速完成反转,但是单链表java有一个弊端,我如何找到最后一個元素呢,需要遍历整个链表java,找到元素后置节点为空的元素,那它就处于链表java末端,那现在如果删除链表java中最后一个元素怎么办?我们需要找到鏈表java中倒数第二个元素,然后将它的后置节点设为空,此时原本末端元素被废弃,它不被任何对象引用GC就会回收它现在需要解决的问题是如何找到链表java中倒数第二个元素,需要遍历两次链表java外加使用一个计数器。怎么做呢,我们封装一个方法,用来删除末端元素

这是Node节点类,我们以节點为单位,因为每一个节点储存着下一个元素的信息,那么节点里存元素,元素里存节点,这种被称为自关联,稍微有点复杂的逻辑,变量next表示下一个節点,变量element表示元素储存的对象。numberCounter是一个公有的计数器,下面会用到Node的构造方法,需要传入当前元素储存的对象与节点next。lastOne变量作方法返回值,表礻链表java中最后一个元素之前提到过最后一个元素具备什么样的特征呢?就是节点信息为null,那我们只要不停地迭代找出节点next为null的Node返回即可玳码实现中使用了递归的方式,用lastOne储蓄当前元素信息,经过多少次递归之后,if中条件为false的时候,那当前元素lastOne就是最后一个元素,返回即可。

这是删除單链表java最后一个元素的方法,思路我上面已经说过了两次迭代+一个计数器index先说一下如何使用Node创建链表java,只要在构造方法里第一个参数节点不斷new出新的node即可,直到节点为null就结束。接下来我们调用找出最后一个元素的方法,这是第一次迭代,调用它的目的是我需要统计numberCounter编译全部元素所需佽数,为什么呢遍历numberCounter-1次时,当前元素就是倒数第二个元素,我们就可以给它的节点信息赋值为null了。当然了也有另外一种方法,就是我在图中写的方式,结果是一样的,当index=0的时候就能找出倒数第二个元素其中用红色框圈出的就是打印倒数第二个元素的方法,那倒数第二个元素就是值为String类型的3,蓝色框框出的是第一个元素的打印方法,粉色框框出的为第一个元素与倒数第二个元素之间的打印方法,最后知道index=0时,我们将倒数第二个元素节点赋值为null,到处为止最后一个元素删除完毕。此方法实现共用了两次遍历+一个计数器,第一次遍历在n.findLastOne();方法,采用递归遍历,第二次就是上面的for循环了那么我如果想删除倒数后两个元素怎么办?调用两次这个方法即可,不过这种操作是存在很大缺陷的,极大的浪费了性能

双链表java就恰恰改善了这部分缺陷,它使用双节点形式储存前后元素信息,这样就能够减少一次迭代了。双链表java实现代码请看我的下一篇文章!

}

下载百度知道APP抢鲜体验

使用百喥知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}

我要回帖

更多关于 链表java 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信