Разработка программы для создания и работы с двусвязным списком, состоящим из структур (сортировка списка по фамилии, т,е, по возрастанию), страница 3

5.  bool CDoubleList::AddEnd( LPDOUBLEITEM Item ) – метод класса реализующий добавление элемента в конец списка. В качестве входного аргумента, принимает адрес нового элемента, который необходимо добавить в конец двусвязного списка. Возвращает значение типа BOOL, которое указывает на успешное добавление элемента в список, если результат равен TRUE и FALSE – если добавление не прошло.

6.  bool CDoubleList::Insert( LPDOUBLEITEM Item, int Index ) – метод класса реализующий добавление элемента в любую позицию списка. В качестве входного аргумента, принимает адрес нового элемента, который необходимо добавить и позицию, куда необходимо произвести добавление в двусвязный список. Возвращает значение типа BOOL, которое указывает на успешное добавление элемента в список, если результат равен TRUE и FALSE – если добавление не прошло.

7.  bool CDoubleList::DeleteAt( int Index ) – метод класса реализующий удаление  элемента из любой позиции списка. В качестве входного аргумента, принимает индекс элемента, который необходимо удалить из двусвязного списка. Возвращает значение типа BOOL, которое указывает на успешное удаление элемента из списка, если результат равен TRUE и FALSE – если удаление не прошло.

8.  bool CDoubleList::DeleteAt( LPDOUBLEITEM Item ) – метод класса реализующий удаление  элемента списка. В качестве входного аргумента, принимает адрес элемента, который необходимо удалить из двусвязного списка. Возвращает значение типа BOOL, которое указывает на успешное удаление элемента из списка, если результат равен TRUE и FALSE – если удаление не прошло.

9.  bool CDoubleList::DeleteAll() – метод класса реализующий удаление  всех элементов из двусвязного списка. Возвращает значение типа BOOL, которое указывает на успешное удаление элементов из списка, если результат равен TRUE и FALSE – если удаление не прошло.

10. bool CDoubleList::Sort( bool Direction = true ) – сортирует элементы двусвязного списка в зависимости от входного аргумента. Входным аргументом является тип BOOL, который по умолчанию равен TRUE и сортирует элементы списка по возрастанию, или если FALSE – по убыванию. Возвращает значение типа BOOL, которое указывает на успешное удаление элементов из списка, если результат равен TRUE и FALSE – если удаление не прошло.

11. int CDoubleList::FindIndex( LPDOUBLEITEM Item ) – метод класса, позволяющий узнать номер элемента в двусвязном списке. В качестве аргумента, принимает адрес элемента списка. Возвращает значение типа int, которое указывает на успешный поиск в списке, если результат отличается от -1, и если результат равен -1 – поиск не прошел и элемент не был найден.

12. LPDOUBLEITEM CDoubleList::operator []( int Index ) – перегруженный оператор [], который позволяет получить доступ к элементам списка по их индексу. Возвращает значение типа LPDOUBLEITEM, которое указывает на существующий элемент списка, если результат отличается от NULL, и если результат равен NULL – элемент списка не был найден.

13. void CDoubleList::Print() – метод класса, который реализует вывод на экран целого списка. Ничего не возвращает после выполнения.

14. __declspec( property( get = getCount ) ) int Count – свойство класса, которое возвращает количество элементов двусвязного списка. Может быть только ReadOnly, т.е. – не может быть установлено.

При запуске программы создается объект класса CDoubleList, при этом вызывается конструктор по умолчанию и инициализирует и создает нужные переменные для правильного функционирования класса двусвязного списка.

Для добавления нового элемента в двусвязный список, необходимо вызвать один из соответствующих методов. Для добавления элемента в начало списка – необходимо вызвать метод AddBegin, для добавления элемента в конец списка – нужно вызвать метод AddEnd и наконец, для вставки элемента в любую произвольную позицию списка – необходимо вызвать метод Insert.

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

Для удаления элемента из двусвязного списка или удаления всего списка – нужно воспользоваться одним из соответствующих методов класса. Для удаления элемента из списка – нужно вызвать метод DeleteAt, и передать в качестве входного аргумента – индекс элемента в списке. А если номер элемента в списке не известен, но известен сам элемент – то можно воспользоваться вначале методом FindIndex, который позволит получить индекс элемента в списке, а затем вызвать метод DeleteAt. Также, если известен сам элемент списка, то можно воспользоваться еще одним перегруженным методом класса – DeleteAt, и передать в него сам элемент, после выполнения данного метода – элемент будет удален из списка. Для удаления всего списка – нужно просто вызвать метод DeleteAll и все элементы из списка будут удаленны.

Для использования элементов списка в других объектах, или методах – можно воспользоваться перегруженным оператором operator []( int ). При этом необходимо получить количество элементов списка, для этого можно воспользоваться свойством класса – Count, данное свойство возвращает количество элементов списка. После этого, можно получить доступ к элементам списка по индексу, т.е. как к обычному массиву. В случае задания некорректного значения индекса, метода возвратит значение NULL, что будет соответствовать ошибке.