如果我想在没有尾字段的情况下实现我的LinkedList add方法,它有什么问题?
public class LinkedList<E> {
private Node<E> head= new Node<E>();
private int size=0;
public void linkedList(){
head=null;
size=0;
}
public void add(E data){
Node<E> currNode=head;
while (currNode.hasNext()){
currNode.setNext(currNode.getNext());
}
Node<E> lastNode= new Node<E>();
lastNode.setItem(data);
lastNode.setNext(null);
currNode.setNext(lastNode);
size++;
}
public void remove(int i){
Node<E> currNode = head;
int index=0;
while (index<i){
currNode.setNext(currNode.getNext());
i++;
}
currNode.setNext(currNode.getNext().getNext());
}
public void print(){
Node<E> currNode = new Node<E>();
do{
System.out.println(currNode.getItem());
} while (!currNode.hasNext());
}
public static void main(String arc[]){
LinkedList<String> ll = new LinkedList<String>();
ll.add("9");
ll.add("b");
ll.add("987");
ll.print();
return;
}
}
下面是node
类:
public class Node<E> {
private E item;
private Node<E> next;
public Node<E> getNext(){
return this.next;
}
public void setNext(Node<E> n){
this.next=n;
}
public E getItem(){
return this.item;
}
public void setItem(E item){
this.item=item;
}
public boolean hasNext(){
return (this.next != null);
}
}
编辑:将打印方法更改为:public void print(){Node currNode=head;
while (currNode.hasNext()){
System.out.println(currNode.getItem());
currNode=currNode.getNext();
}
}
我得到的结果是:
null
9
b
这堵路永远不会结束
while (currNode.hasNext()) {
currNode.setNext(currNode.getNext());
}
所以无限循环。
确保将currNode向前移动,通过在while循环中添加CRRNode.Next()
来到达循环结尾。
在您的add
方法中,您的意思不是:
currNode = currNode.getNext();
而不是:
currNode.setNext(currNode.getNext());
?因为最后一个没有效果而且你在做一个无限循环...
问题内容: 我是AngularJS的新手,我正在构建一个示例应用程序。我想在网页上显示Google Maps响应的结果。在这里,我传递了示例值,但是页面进入循环并给出此错误: 这是HTML页面: 问题答案: 在插值内调用函数时,请务必小心。插值会在 每个摘要循环中 运行,并且您在其中调用一个函数,一切都很好,但是随后在该函数中进行一次调用,该调用再次 触发摘要循环(在解析/拒绝和每个promise
问题内容: 我用Java 8编写了一个服务器应用程序,并使用Java 1.8.0u25运行它。 它可以在最初的几个小时内正常工作,但是在收到大约5k至10k请求之后,VM进程的线程使用了其中一个CPU的100%。 因此,我尝试让VM进程检查有问题的线程是什么,它显示线程(线程ID为14303 = 0x37df)为“ C2 CompilerThread0”: 使用,线程的堆栈跟踪如下: 每一次我尝试
给定一棵树,其中左和右子树是min堆,但根节点不维护min堆属性。您的代码应该修改根植于node*n的树,使其成为一个最小堆。(这意味着您需要满足min heap属性:节点的值等于它的一个子节点或两个子节点都是可以的,但节点的值不能大于它的任何一个子节点。您不必试图平衡树或使其成为完整的树。) 请建议我缺少什么。我觉得我把它弄得太复杂了。此外,我没有任何其他函数,如swap将二叉树转换为堆MIN。
我一直在尝试用C语言实现带有队列的二叉树,我对这种语言相当陌生。我一直在尝试调试我用C编写的代码,从头开始编写代码,但没有结果。我看不出我做错了什么。 我检查了用整数数据编写的队列代码,它运行得很好。 enqueue 函数推送队列中的元素 取消排队函数从队列中弹出元素 空 函数检查队列是否为空 然后我实现了二叉搜索树,并在节点中打印了元素 和
我知道Android模拟器有很多问题,StackOverflow几乎溢出了关于它的问题。我知道,我已经经历了其中的大多数,为我的问题寻找答案:) 我有通常的HAXM问题时,我开始,但我修复了VT设置在我的BIOS和我重新安装了HAXM。 android_sdk_home=C:\users\maffe 仿真器:设备FD:1160 HAXM正在工作,仿真程序在快速virt模式下运行 01-22 05:
我正在创建一个应用程序(不在play store中),它在Webview中使用了大量内存,通过使用LeakCanary,我发现了一个修复了几个小内存泄漏的问题。有两个漏洞比其他漏洞更难修复,但也比任何其他漏洞小得多(每两个小时泄漏10-12kb),我不得不暂时保留它们。在让我的应用程序运行一整晚后,我通常会看到大量的日志,比如: 背景部分并发标记扫描GC释放263432(17MB)AllocSpa