/cpp-single-linked-list

Финальный проект: односвязный список

Primary LanguageC++

cpp-single-linked-list

Краткое описание

Репозиторий является авторской реализацией структуры данных "односвязный список". Проект позволил усовершенствовать навыки работы со связными типами данных и реализации собственных. Также в процессе был реализован простой шаблонный итератор BasicIterator.

template <typename ValueType>
class BasicIterator;

Инструкции по развертыванию и пользованию

Требуемая версия языка - С++17 и выше. В остальном конкретных требований нет, компилятор подойдет любой: gcc, MinGW, Microsoft Visual C++.

image

SingleLinkedList - шаблонный класс, использующий в качестве итератора реализованный BasicIterator.

template <typename Type>
class SingleLinkedList;

Определены псевдонимы типов:

using iterator_category = std::forward_iterator_tag;
using value_type = Type;
using difference_type = std::ptrdiff_t;
using pointer = ValueType*;
using reference = ValueType&;

В конструкторе может принимать:

  • Список инициализации SingleLinkedList(std::initializer_list<Type>);
  • Константную ссылку на другой список SingleLinkedList(const SingleLinkedList&);

Определены методы:

  • Конструирование списка из любого другого контейнера, имеющего методы begin() и end()
template <typename Container>
SingleLinkedList ConstructList(const Container& cont)
  • void swap(SingleLinkedList&) - обменивает значения с другим списком
  • size_t GetSize() - возвращает размера списка
  • bool IsEmpty() - возвращает true, если список пустой, false в противном случае
  • void PushFront(const Type&) - вставляет элемент в начало списка
  • void PopFront() - удаляет элемент из начала списка
  • Iterator InsertAfter(ConstIterator, const Type&) - вставляет значение на позицию, переданную первым аргументом. Возвращает итератор на это значение
  • Iterator EraseAfter(ConstIterator) - удаляет позицию, переданную в качестве аргумента. Возвращает итератор на элемент, следующий за удаленным
  • void Clear() - очищает список
  • Iterator before_begin() - возвращает итератор, указывающий на позицию перед первым элементом односвязного списка. Разыменовывать этот итератор нельзя - попытка разыменования приведёт к неопределённому поведению.
  • ConstIterator before_begin() - возвращает константный итератор, указывающий на позицию перед первым элементом односвязного списка. Разыменовывать этот итератор нельзя - попытка разыменования приведёт к неопределённому поведению.
  • ConstIterator cbefore_begin() - возвращает константный итератор, указывающий на позицию перед первым элементом односвязного списка. Разыменовывать этот итератор нельзя - попытка разыменования приведёт к неопределённому поведению.
  • Iterator begin() - возвращает итератор на начало списка
  • Iterator end() - возвращает итератор на элемент, следующий за последним
  • ConstIterator begin() - возвращает константный итератор на начало списка
  • ConstIterator end() - возвращает константный итератор на элемент, следующий за последним
  • ConstIterator cbegin() - возвращает константный итератор на начало списка
  • ConstIterator cend() - возвращает константный итератор на элемент, следующий за последним