Структуры данных и алгоритмы C ++

Структуры данных и алгоритмы C ++ - означает упорядочивание или организацию элементов определенным образом. Когда мы говорим, что мы должны упорядочить элементы, эти элементы могут быть организованы в разных формах. Например, носки могут быть расположены по-разному. Вы можете просто держать это в своем буфете, все испорчено. Или вы можете держать его аккуратно сложенным. Лучше всего складывать и расставлять их по цвету. Так что для поиска конкретной пары носков третье устройство идеально подходит.

Аналогично организации носков, Данные могут быть организованы по-разному или в разных формах. Эти различные способы организации данных называются структура данных. Давайте посмотрим формальное определение структуры данных и структуры данных и основы алгоритмов.

Структуры данных и алгоритмы C ++:

Логическая или математическая модель конкретной организации данных.

ИЛИ

Это особый способ организации данных на компьютере, чтобы их можно было использовать.

Аналогично носкам; различная организация структур данных списков и алгоритмы C ++ доступны для -

  1. массив
  2. Связанный список
  3. стек
  4. Очередь
  5. дерево
  6. график
  7. Хеш-таблица
  8. отвал
  9. документация
  10. таблицы

Эти структуры данных и алгоритмы C ++ очень важны при программировании. Хороший программист всегда делает упор на структуру данных, а не код. Каждый язык программирования работает с различными структурами данных и алгоритмами на C ++. Структуры данных, доступные в C ++, следующие.

  1. массив
  2. Связанный список
  3. стек
  4. Очередь
  5. дерево
  6. график
  7. Хеш-таблица
  8. отвал

Давайте обсудим это один за другим:

Массив # 1

Массив - это самый простой тип структур данных и алгоритмов C ++. Массив определяется как последовательная коллекция фиксированного размера элементов данных того же типа данных. Например, a0 = 12, a1 = 21, a2 = 14, a3 = 15…. Мы можем представить одномерный массив, как показано на рисунке:

где

0, 1, 2, 3… ..n называется индекс или индекс

a (1), a (2), … a (n) называется индексной переменной

Это может быть 1-мерный, 2-мерный, 3-мерный и т. Д. Многомерный.

В памяти массив хранится в смежных местах памяти.

Самый низкий адрес соответствует первому элементу

Самый высокий адрес соответствует последнему элементу

Мы можем объявить одномерный (1-мерный) массив в C ++ следующим образом

dataType arrayName (arraySize);

Например, int num (5);

Инициализация массива в C ++

num = (23, 10, 12, 3, 6);

Мы можем объединить объявление и инициализацию в одно утверждение следующим образом.

int num = (23, 10, 12, 3, 6);

Когда мы хотим динамически распределить размер массива, мы должны использовать новый оператор следующим образом

int * a = new int (size);

Недостатком массива являются вставка и удаление элементов, медленное как в упорядоченном массиве, так и в его хранилище фиксированного размера.

# 2 Связанный список

Список относится к линейной коллекции предметов. Связанный список представляет собой серию связанных узлов (элемент данных), как показано на рисунке 3. Узел заголовка указывает на первый узел списка, а последний узел указывает на NULL, обозначенный как Æ. Поскольку каждый узел содержит как минимум.

  1. Часть данных (любой тип)
  2. Указатель на следующий узел в списке

Связанный список представлен в памяти с использованием двух массивов. Один массив хранит информацию, называемую информацией, которая представляет собой данные, которые должны быть сохранены, а другой хранит поле следующего указателя, называемое LINK, которое является адресом следующего узла.

Преимущество связанного списка над массивом:

И массив, и связанный список являются представлениями списка элементов в памяти. Важным отличием является то, как предметы связаны друг с другом. Основным ограничением массива является вставка элемента в массив, а удаление элемента из упорядоченного массива затруднено, так как остальные элементы должны быть перемещены. Вставка и удаление элементов из связанного списка очень просты.

Примечание: станьте разработчиком на C ++
Научитесь разрабатывать и настраивать программы для различных платформ. Кодируйте, тестируйте, отлаживайте и внедряйте программные приложения. Развивайте навыки для обеспечения бесперебойной работы приложений.

Типы связанного списка:

1. Односвязный список : содержит только одно связанное поле, которое содержит адрес следующего узла в списке, и поле информации, содержащее информацию, подлежащую сохранению.

2. Одиночный круговой связанный список является только одним списком, но последний узел списка содержит адрес первого узла вместо нуля. То есть содержимое заголовка и следующего поля последнего узла совпадают.

3. Двусвязный список содержит два связанных поля предыдущего и следующего. Ранее связанное поле, которое содержит адрес предыдущего узла в списке, а следующее связанное поле содержит адрес следующего узла в списке, а в поле информации хранится информация для хранения.

4. Двойной круговой связанный список - это дважды связанный список, но следующее поле последнего узла содержит адрес первого узла вместо нуля.

Рекомендуемые курсы

  • Курс на VB.NET
  • Обучение программированию данных
  • Интернет курс ISTQB
  • Kali Linux Учебный курс

Реализация связанного списка в C ++ включает создание узла, удаление узла из списка, вставку вновь созданного узла в список и поиск узла с определенным ключом.

Код для создания узла выдается следующим образом:

Вставка узла в список включает три случая

1. Вставка узла в начале означает вставку вновь созданного узла в качестве начального узла. Для вставки узла в начале сначала создайте новый узел и сделайте так, чтобы новый узел указывал на старое начало, а затем обновите начало, чтобы указать на новый узел, как показано на рисунке ниже:

Код для вставки узла в начале:

2. Вставка узла в хвост означает вставку вновь созданного узла в качестве последнего узла. Для вставки узла в качестве хвостового узла необходимо создать новый узел и сделать так, чтобы старый последний узел указывал на новый узел, а затем обновлять хвост, чтобы он указывал на новый узел.

3. Вставка узла в заданную позицию включает в себя создание нового временного узла, затем необходимо найти позицию вставки вновь созданного узла.

Код для вставки узла в заданную позицию:

Удаление узла из списка включает в себя удаление узла из существующего списка. Удаление узла из списка ссылок проще, чем вставка узла в список. В C ++ код для удаления узла выдается следующим образом:

Обход узла с определенным ключом (значением) из списка будет искать узел из списка, информация которого будет совпадать с ключом данного узла. Следующий код C ++ будет проходить по списку. структуры данных и алгоритмы C ++

# 3 Стек

Стек - это список элементов, в которые элемент может быть вставлен или удален только на одном конце, называемом вершиной стека. Рассмотрим пример башни Ханоя. Здесь, когда нам нужно вставить диск, мы должны вставить его только сверху, и аналогично извлечение диска происходит только сверху.

Стек использует принцип LIFO, что означает, что он работает в порядке «последний пришел первым». То есть последний элемент, добавленный в стек, является первым элементом удаления. Таким образом, в стеке можно выполнить четыре основные операции:

  • Isempty: эта операция определяет, пуст ли стек.
  • Push : эта операция добавляет новый элемент в стек.
  • Pop: эта операция удаляет элемент из стека, добавленный последним.
  • Вверх: Эта операция возвращает элемент, который был добавлен в стек за последнее время.

На следующем рисунке приведен пример стека, в котором вставка в стек и удаление из стека элемента происходит с вершины стека и нигде больше.

Переполнение стека

Условие, возникающее в результате попытки поместить элемент в полный стек.

Стека стека

Условие, возникающее в результате попытки выгрузить пустой стек.

Здесь мы показали некоторые операции push и pop в стеке. Предположим, что изначально стек пуст, затем мы добавили F, A, M, R, N. Затем вытолкните два раза и нажмите N, H, B, T, K, O, P.

Реализация стека:

Это может быть реализовано с использованием массива или связанного списка обоих.

Следующий приведенный код показывает, как стек реализован в C ++ с использованием Class. Здесь мы определили один класс с именем стека, в котором создан массив с именем stick с динамическим размером и две основные функции push и pop.

Переполнение стека: Когда вершина> = размер-1

Недостаточность стека: когда вершина <0

Статьи по Теме:-

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

  1. Шпаргалка для языка программирования C ++
  2. Linux против Ubuntu
  3. C ++ Интервью Вопросы, которые вы должны знать
  4. Структуры данных и алгоритмы Вопросы для интервью | Наиболее полезный
  5. Лучшая статья по алгоритмам и криптографии (примеры)
  6. 8 Потрясающий Алгоритм Интервью Вопросы и Ответы
  7. Удивительное руководство по Kali Linux vs Ubuntu
  8. C ++ Vector vs Array: Каковы лучшие функции