链接列表输出未正确生成

时间:2011-12-01 04:07:44

标签: java linked-list

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();
    }
}

1 个答案:

答案 0 :(得分:1)

我可以立即看到一些问题:

  • 除非getWord()方法做的事情比较奇怪,否则只有在第一个单词与新添加的单词匹配时才会增加计数
  • 无论是否匹配,您都会在列表首部添加新的Node - 结合第一个问题会导致您的所有内容都计入2
  • printList(),您需要从top而不是top.getNext()
  • 开始