StackOverflowers。
我是这个网站的新手,我认为来这里寻求一些关于从链接列表中打印正确输出的特定问题的帮助是明智的。这个想法是采用一个使用数组生成列表的程序,并将其转换为链表,同时获得相同的结果。现在,我已经做了几个小时了,尽管我已经到了实际打印输出的地步(最终(,但没有获得所需的结果。
要求结果:
注意:此结果是使用数组生成的
单词:此计数:2
单词:课程数:2
单词:检查次数:1
字数:7
Word:构造计数:1
字数:,共9个
Word:算法计数: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();
}
}
我马上就能看到一些问题:
- 除非
getWord()
方法做了一些奇怪的事情,否则它只会在第一个单词与新添加的单词匹配时递增计数 - 无论是否匹配,您都要将一个新的
Node
添加到列表的开头,再加上第一个问题,所有问题的计数都为2 - 在
printList()
中,您需要从top
开始,而不是从top.getNext()
开始