#linked-list #smalltalk
#связанный список #smalltalk
Вопрос:
Я не уверен, что полностью понимаю, как использовать класс LinkedList, предоставляемый в SmallTalk Visual Works. Я могу создать экземпляр класса простым выполнением:
myList := LinkedList new.
Но как мне добавить узел. Я попытался создать экземпляр класса Link и задать значение, но, похоже, это не работает.
myLink := Link new.
myLink value: 3.
Я новичок в smalltalk и буду очень признателен за любую помощь!
Ответ №1:
Новичку лучше научиться использовать OrderedCollection вместо этого. Затем посмотрите на методы обоих классов и увидите сходства и различия. Вы увидите, что они по сути одинаковы, потому что вся разница заключается в производительности вставки и удаления элементов в середине коллекции. В OrderedCollection копируется вся коллекция, в то время как в LinkedList только «указатели» адаптируются к вставленному узлу.
На практике LinkedList используется редко, потому что OrderedCollection достаточно хорош для большинства, если не для всех потребностей.
Комментарии:
1. Действительно, LinkedList — это просто деталь реализации для класса процесса Smalltalk.
Ответ №2:
Предполагается, что вы должны использовать его путем подкласса Link, например, добавив value
переменную экземпляра и два метода #value
и #value:
. Но, как сказал Янко, я бы не стал заморачиваться и просто использовал OrderedCollection .