StackOverflowers。
我对这个网站很陌生,并认为明智地来到这里寻求一些特殊问题的帮助,这个问题涉及从链表中打印正确的输出。 我们的想法是使用一个程序,该程序使用数组生成列表并将其转换为链表,同时实现相同的结果。现在,我已经进行了几个小时,即使我达到实际打印输出的点(最后),也没有获得所需的结果。
要求结果:
注意:此结果是使用阵列
生成的
字:这个数:2
单词:课程数:2
字:检查计数:1
字:伯爵:7
字:施工数:1
字:数:9
字:算法数:4
字:和数:9
结果我得到:
注意:将数组方法转换为链接列表时会产生此结果
字:信仰数:2
字:我的数:2
字:数:2
字:最佳数:2
字:计数:2
字:数:2
字:数:2
字:事实数:2
字:计数:2
我不确定为什么会这样,我似乎无法跟踪它。我试过阅读我的笔记和搜索,但无济于事。我不确定它是否与setNext(...)[Node类的一部分]或我调用incrementCount()方法[Word类的一部分]有关。我不相信setNext(...)甚至有一个目的,但只是代码的一部分,此时什么也不做。
我希望我的交付不会偏离轨道,并且可以为我的尝试提供解决方案。我知道我达到了极限,因为我无法想到其他任何事情。
期待您的建议。
感谢。
T3。
private Node top;
public WordList()
{
top = null;
}
// This method adds words to the linked list.
public void addWord( String w )
{
Word word = new Word( w );
top = new Node(word,top);
// Checks to see if a particular word is present more than once.
// If the particular word is encountered more than once, it
// increments the word count for that particular word, else
// a new node is created to store another word. The word check
// process is repeated once more.
// Note: getWord() is part of the Node class that attempts to retrieve
// a word that is held in a particular node.
// matchesWord(...) determines whether a particular word (string) has been
// encountered. If result is true, the number of times
// the word is encountered should be incremented.
if( top.getWord().matchesWord( w ))
{
top.getWord().incrementCount();
}
else
{
Word newWord = new Word ( w );
Node newNode = new Node(newWord, top);
//top = newNode;
top.setNext(newNode);
}
} // end addWord
// This method prints out the linked list.
public void printList()
{
Node currentNode;
currentNode = top.getNext();
while(currentNode != null)
{
System.out.println(currentNode.getWord());
currentNode = currentNode.getNext();
}
}
答案 0 :(得分:1)
我可以立即看到一些问题:
getWord()
方法做的事情比较奇怪,否则只有在第一个单词与新添加的单词匹配时才会增加计数Node
- 结合第一个问题会导致您的所有内容都计入2 printList()
,您需要从top
而不是top.getNext()