Связанные структуры данных. Реализация стека, основанная на указателях. Примеры использования механизма стека

Страницы работы

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.

Фрагмент текста работы

ЛЕКЦИЯ  20

Связанные структуры данных

Связанные структуры данных. 1

Стек. 2

Реализация стека, основанная на указателях. 3

Пример, демонстрирующий  работу со стеком.. 4

Реализация стека в виде массива. 7

Примеры использования механизма стека. 9

Проверка баланса скобок. 9

Распознавание строк. 9

Вычисление постфиксных выражений (обратная польская нотация) 10

Очередь. 12

Реализация очереди с помощью связанной структуры данных. 12

Примеры использования механизма очереди. 15

Вычисление значения целого числа, представленного в строке символов. 15

Определение последовательностей-палиндромов. 16

Список. 16

Реализация абстрактного списка в виде массива. 17

Реализация списка с помощью связанной структуры данных. 19

Нелинейные связанные структуры.. 26

Бинарное дерево. 26

В ходе этой лекции вам необходимо усвоить:

·  Понятие и принципы работы со связанными динамическими данными

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

Динамические структуры данных имеют множество приложений и являются фундаментальными понятиями в программировании. Каждая такая структура характеризуется взаимосвязью элементов и набором типовых операций над структурой. В состав базового элемента динамической структуры входит (как минимум) один указатель на эту структуру.

В случае динамической структуры важно:

·  каким образом она может расти и сокращаться;

·  каким образом включить в структуру новый и удалить существующий элемент;

·  как можно обратиться к конкретному элементу структуры для выполнения определенной операции: найти первый элемент, найти последний, предыдущий, следующий элемент  (доступ к элементам относительный – по отношению к текущему – по индексу неудобно, т.к. элемент может изменить место).

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

Рассмотрим линейные связанные структуры. Они имеют много общего:

·  все элементы связанных структур представляют собой последовательность элементов, связанных между собой с помощью указателей;

·  количество элементов структур ограничивается объемом ОП;

·  ОП для элементов структур выделяется и освобождается динамически (new,  delete).

·  последовательность элементов имеет начало цепи (его указатель имеет значение NULL) и конец (вершину), которую обычно адресует указатель стека, очереди или списка.

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

вершина цепи

NULL

Стек: включение и исключение элементов только здесь; это вершина стека

Очередь: исключение – здесь; это – начало очереди

Включение – здесь; это конец очереди

Список: включение и исключение элементов в любом месте цепи

Различение названных линейных структур состоит в том, что включение и исключение элементов из них проводится по-разному:

·  Стек – линейный список, в котором включение и исключение элементов (и всякий доступ к ним) проводится только с одного его конца – с его вершины.

·  Очередь – линейный список, в котором включение элементов производится только с одного конца списка - в его конце, а исключение элементов проводится с другого конца списка – только из его начала.

·  Дек – линейный список, в котором все включения и исключения (и обычно всякий доступ) делаются на обоих концах.

·  В списке элементы обычно упорядочены по определённому признаку – одному из элементов записи, их которых формируется список; включение и исключение элементов производится в любом месте цепи, т.к. поиск требуемого места в списке производится, как правило, по признаку, по которому список упорядочен.

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

Стек

Стек - это способ организации накопления и извлечения данных, при которой элемент, поступивший в стек последним, извлекается первым. Этот способ используется, например, при отработке последовательности активизированных подпрограмм и вложенных циклов. Другие названия этого способа организации и обслуживания данных: магазинная память (оружейный термин); LIFO – Last In – First Out  (последним вошёл – первым вышел). Стек может быть реализован как массив элементов или в виде

Похожие материалы

Информация о работе

Тип:
Конспекты лекций
Размер файла:
453 Kb
Скачали:
0

Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.

Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.

Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.

Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.

Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.

Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.