Вывод со связанным списком сгенерирован неправильно - PullRequest
0 голосов
/ 01 декабря 2011

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 Ответ

1 голос
/ 01 декабря 2011

Я вижу сразу несколько проблем:

  • Если метод getWord() не делает что-то довольно странное, он будет увеличивать счет только в том случае, если самое первое слово соответствует вновь добавленному слову
  • Вы добавляете новый Node в начало списка независимо от того, есть ли совпадение - в сочетании с первой проблемой вы получаете 2 за все
  • В printList() вам нужно начать с top, а не top.getNext()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...