Какие?

Data Structures and Algorithms, возможно, является одним из самых важных курсов в учебных программах по информатике и инженерии в университетах. По сути, курс подчеркивает способность понять проблему, придумать решение и оптимизировать его, используя инструменты в нашем распоряжении.

Обсуждение структур данных начинается с малого как способа представления данных различными способами в зависимости от контекста. По мере того, как мы продвигаемся по курсам, в смесь добавляются алгоритмы и внезапно появляются такие соображения, как:

  1. важность выбора правильной структуры данных для решаемой задачи,
  2. выбор правильного подхода к решению проблемы (подходы жадный, динамическое программирование, разделяй и властвуй и т. п.) и
  3. оптимизация нашего решения с точки зрения пространственной и временной сложности,

выдвигаются на первый план.

Почему?

В том же духе телеметрия — это попытка реализовать некоторые важные (и полезные) структуры данных и алгоритмы на C++. В частности, цели этого упражнения заключаются в следующем:

  1. Отточить свои навыки C++,
  2. Пересмотрите структуры данных и алгоритмы (и каждую их часть, которая вызывала у меня головную боль) и
  3. Надеюсь, реализовать библиотеку в объектно-ориентированном стиле и обобщить библиотеку с помощью шаблонов.

Дополнение от 19 мая 2020 г.:

Новые цели для этой библиотеки также включают:

  1. Реализация упрощенной версии STL.
  2. Создайте простой в использовании учебник для таких чайников, как я, и задокументируйте проблемы, с которыми я столкнулся, сомнения, которые у меня были, и полезные материалы для чтения, которые я нашел, все в одном месте.

Как?

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

Я отправлю весь код этого проекта на GitHub здесь:



Попутно я буду бубнить с комментариями о проблемах, с которыми я столкнулся, обо всем, что меня смутило или заставило застрять, и перечислю все, что я делал в Интернете, чтобы прояснить эти сомнения, так что не теряйте веру в меня на случай, если я буду идиотом в отношении чего-то очевидного. Спасибо!

Окей. Вот оно...

TL;DR

Вот краткий обзор каждой статьи из этой серии. Обновляется после каждого нового поста.

Связанные списки





Стеки



Очереди