Использование класса LinkedList в SmallTalk?

#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 .