Сортированный двусвязный список Java - PullRequest
1 голос
/ 09 марта 2011

У меня возникла проблема с реализацией отсортированного двусвязного списка имен и фамилий.

Добавить поле для каждой ссылки, которое указывает в алфавитном порядке следующее имя;существующая следующая ссылка используется для обозначения в алфавитном порядке следующей фамилии.Вам также понадобится вторая корневая ссылка для списка - существующая корневая ссылка указывает на алфавитную первую фамилию, а вам понадобится ссылка на алфавитное имя.Обратите внимание, что у вас по-прежнему будет только один объект ссылки для каждого имени, введенного в список.

Сделав это, внесите все необходимые изменения в методы вставки, поиска и удаления, чтобы сохранить оба чередующихся списка.Также обновите оценки времени выполнения, чтобы они оставались точными.

Наконец, добавьте второй метод поиска, который берет имя и возвращает все полные имена, включая это имя, и второй метод отображения, который печатает списокимена в алфавитном порядке по имени.Удостоверьтесь, что вы также даете оценки времени выполнения для этих методов.

И я совершенно не знаю, как это сделать.Я уже создал один связанный список с именем и фамилией, но это было настолько, насколько я смог получить.

Любая помощь будет великолепна: D

Спасибо.

Ответы [ 3 ]

1 голос
/ 09 марта 2011

Поскольку вы уже внедрили односвязный список, расширение до двусвязного списка не должно быть слишком сложным. У вас уже есть ссылки в будущем (см. Рисунок ниже). Теперь вам нужно добавить ссылки в обратном направлении. Кроме того, обратите внимание на синие линии на картинке ниже. Добавьте дополнительные ссылки для орфографических свойств. Таким образом, каждый узел будет иметь переменные:

private Node NextFirstName;
private Node PreviousFirstName;
private Node NextLastName;
private Node PreviousLastName;

enter image description here

1 голос
/ 09 марта 2011
  1. Создайте класс ссылок, который имеет два поля ссылок (nextFirstName, nextLastName) и поле для объекта имени.
  2. При вставке сначала выполните поиск объекта ссылки, предшествующего (LastName) этому новомуодин и вставьте его после этого, используя поле nextLastName.Затем сделайте то же самое с FirstName, используя поле nextFirstName в качестве ссылки.
  3. ?????
  4. profit!

Это очень похоже на запахдомашнее задание:)

0 голосов
/ 09 марта 2011

Вам НЕ нужны обратные ссылки! Задача запрашивает что-то вроде 2 односвязных списков, которые используют те же объекты, что и записи. Каждый объект имеет две ссылки: одну на следующий элемент в списке A и одну на следующий элемент в списке B.

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