Задание 1 (по ООП).

Все мы в разное время сталкивались с реализацией работы со списками на различных языках. Чтобы не забыть столь нужные навыки предлагается повторить почти тоже самое на C#. Списки бывают разные. По крайней мере есть двунаправленные и однонаправленные. Но у обоих этих разновидностей есть масса общих функций. На этом и хочется заострить внимание. В общем задание такое: нужно реализовать базовый абстрактный класс списков, описывающий абстрактные методы общие для обоих типов списков (различаются реализацией): получение элемента по номеру, добавление элемента в начало и/или в определенное место, удаление элемента по номеру, свойство количества элементов в списке. Два наследующих класса (класс однонаправленного списка и двунаправленного) реализуют методы базового класса, каждый по-своему.

Уточнения:

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

Комментарии

легко:) например вот так (для

легко:)

например вот так (для односвязного):

class SingleLink

{

int data; // храним целые числа в списке

SingleLink next; // ссылка на следующий элемент

}

соответственно в самом классе списка храним текущий элемент и начало.

Указатели в C#

собственно сабж, как организовать связи между элементами списка?