Почему моя функция отображения связанного списка всегда печатает последний элемент? - PullRequest
0 голосов
/ 27 июля 2011

Моя функция Dipslay из связанного списка выглядит следующим образом: -

public void display()
{
    cur = first;

    if(isEmpty())
    {
        System.out.println("no elements in the list");
    }
    else
    {
        System.out.println("elements in the list are:");

        do {
            System.out.println(first.data);
            first = first.link;
        } while(first.link!=null);

        first=cur;
    }

, где curr и first - ссылки на узел класса

public class node
{
      int data;
      Node link=null;
} 

, почему эта функция толькопечатать последний элемент?

Ответы [ 2 ]

1 голос
/ 27 июля 2011

Невозможно сказать наверняка, но вполне вероятно, что ваш список на самом деле содержит только один элемент; то есть код, который создает список, не работает.

Следует также отметить, что метод display должен использовать локальную переменную для пошагового перемещения по элементам. Если вы используете переменную экземпляра (например, first), вы можете получить различные методы, мешающие друг другу.

Наконец, ваш тест на конец списка неверен. Тщательно продумайте, на что указывают first и first.link при выполнении теста while.

1 голос
/ 27 июля 2011

Функция выглядит более или менее правильно.Однако, почему вы устанавливаете cur в first, а затем используете first для выполнения итерации?Просто используйте cur в итерации, чтобы вам не пришлось сбрасывать first.

Убедитесь, что вы правильно добавляете узлы в список.Поэтому, если вы считаете, что в списке 3 элемента, запустите это в display():

System.out.println(first.data);
System.out.println(first.link.data);
System.out.println(first.link.link.data);

. Это делается для проверки правильности ваших ссылок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...