У меня есть задание по Java из класса. Речь идет о сотрудниках, поэтому есть три класса: Employee, EmployeeList и Nodes. Мне нужно сделать из этого двусвязный список. Связанный список — это пользовательский класс, созданный нами, а не предоставленный Java.
Теперь я застрял в методе add(Employee e). метод вводит параметры объекта Employee и должен быть добавлен в конец списка.
это код
public void add(Employee emp) {
Node n = new Node(emp, null , null);
if(isEmpty() == true) {
setHead(n);
setTail(n);
n.setPrevious(null);
n.setNext(n);
}else {
Node c = getTail();
c.setNext(n);
n.setPrevious(c);
setTail(n);
}
}
Проще говоря, когда список пуст, метод безупречно добавляет сотрудника в узел, даже когда я добавляю в список второго сотрудника, все в порядке; но когда я добавляю больше и пытаюсь получить его, я получаю неправильные результаты.
в основном, если список заполнен, то узлу c назначается конец списка. «Хвост или c» был равен нулю, но теперь это Node n. Узел n, поскольку это следующий элемент после хвоста, предыдущей ссылкой узла n является узел c, а хвост обновляется до узла n.
Что я здесь делаю неправильно? если я попытаюсь
list.getHead().getNext().getNext().getPrevious().getEmployee().getName());
где список = [а,б,в]; результат — c, где он должен быть b.
это;
head = a, a.getNext().getNext() == c;
c.getPrevious() == b;
но я остаюсь с
Что не так в коде? Пожалуйста помоги. высоко ценится
Помимо следования данному коду, камера не поможет понять, что не так. if(isEmpty() == true) { setHead(n); установить хвост (п); n.setPrevious (нуль); n.setNext (нуль); // n.setNext(n); } — person Sabbib schedule 14.01.2014
Что бы вы посоветовали там неправильного? Благодарность — person Sabbib schedule 14.01.2014
Я хочу сказать… ваш код выглядит нормально, единственная логическая вещь, которую я могу понять из данного кода, — это когда isEmpty() имеет значение true, n.setNext() должно иметь нулевое значение вместо n. Исправить проблему будет сложно. Лучше поставить точку останова и запустить приложение в режиме отладки и посмотреть, где узлы неправильно назначаются/размещаются. — person Sabbib schedule 14.01.2014
Можете ли вы опубликовать код для каждого метода, используемого здесь? getNext, stNxt, getPrevious, setPrevious, … — person Sabbib schedule 14.01.2014
Я почему-то не могу выложить все здесь. dropbox.com/sh/tsxa1sjd72dm4gx/KBlF1b-qtA — person Sabbib schedule 15.01.2014
В вашем методе
add
нет ничего плохого, как показано в следующем коде:Вывод:
Один из других методов списка неправильно обновляет следующие/предыдущие переменные узла.