Eivasch-list#96
Conversation
| } | ||
|
|
||
| private Node getNode(int idx) { | ||
| Node current = start; |
There was a problem hiding this comment.
idx может быть отрицательный
There was a problem hiding this comment.
То есть просто проверку сделать? И ошибку выкидывать, если что
There was a problem hiding this comment.
лучше выдавать ошибку
| * Односвязный список | ||
| */ | ||
| public class MyLinkedList extends List { | ||
| public class MyLinkedList extends List implements Stack, Queue { |
There was a problem hiding this comment.
зачем наследовать LinkedList от List? они основаны на разных принципах хранения данных.
LinkedList'у не нужен массив элементов, который от наследует от List
There was a problem hiding this comment.
Это не я писала, это было в задании:
- Должен наследовать List
- Односвязный список
There was a problem hiding this comment.
да, действительно. но то, что меня смутило - это то, что вы часть логики реализуете в абстрактном классе List и в каждом методе вызываете super() - это не очевидно. это не ошибка логики, работать будет. но если даже и выносить size в абстрактный класс, то я бы его меняла по необходимости. это дело вкуса скорее. не считаю за ошибку
| * Метод, который может бросить ошибку должен быть отмечен как throws НазваниеИсключения | ||
| * как сделано для этого метода | ||
| */ | ||
| abstract int remove(int idx) throws NoSuchElementException; |
There was a problem hiding this comment.
этот метод помечен как абстрактный, т.е. нужно обязательно определить при наследовании. пусть он так и останется абстрактным, не нужно здесь логику
| /** | ||
| * Получить элемент с позиции idx, бросить исключение, если позиция невалидная | ||
| */ | ||
| abstract int get(int idx) throws NoSuchElementException; |
|
@asabelnikova вы про индекс, который в getNode? |
| @Override | ||
| void add(int item) { | ||
|
|
||
| int newSize = size() + 1; |
There was a problem hiding this comment.
какая сложность на вставку будет, если каждый раз при заполнении листа увеличивать размер буфера на 1?
какая сложность будет, если увеличивать в n раз (например, в 2)?
There was a problem hiding this comment.
Ого. Интересно. То есть предлагаете увеличить сразу в два раза?
Но тогда же придется заводить еще одну переменную .Чтобы был размер массива и реальный размер массива.
Или я не поняла мысль?
There was a problem hiding this comment.
вам нужна переменная только для размера списка.
размер буфера вы можете получить list.length
| int remove(int idx) throws NoSuchElementException { | ||
| return 0; | ||
| check_idx(idx); | ||
| int newSize = listSize - 1; |
There was a problem hiding this comment.
тоже самое. очень неоптимально каждый раз ресайзить массив при удалении элемента.
No description provided.