- •Содержание
- •Введение
- •Указатель
- •1.1. Определение указателя
- •1.2. Понятие динамической структуры данных
- •1.3.Переменные типа "массив". Арифметические операции с указателями
- •Int hours[6];
- •1.4. Динамические массивы
- •Контрольные вопросы
- •Задания для практической работы
- •Абстрактный тип данных
- •Линейный однонаправленный (односвязный ) список
- •1.1. Определение односвязного списка
- •1.2. Операции обработки списка
- •1.3. Создание класса для работы со списком
- •1.4. Реализация копирования списка с помощью класса
- •Контрольные вопросы
- •Задания для практической работы
- •Линейные двунаправленные списки
- •1.1. Определение двунаправленного списка
- •Контрольные вопросы
- •Задания для практической работы
- •Структуры данных стеки и очереди
- •1.1. Определение стека, очереди
- •1.2. Представление стека
- •1.3. Основные операции над стеком
- •1.4. Реализация стека на основе статического массива
- •1.5. Реализация стека с использованием динамической памяти
- •1.6. Представление статической очереди
- •1.7.Представление динамической очереди
- •Контрольные вопросы
- •Задания для практической работы
- •Структуры данных: деревья
- •1.1. Определение структуры: дерево
- •1.2. Обходы деревьев
- •1.2.1. Алгоритмы обхода в глубину
- •1.2.2. Алгоритмы обхода в ширину
- •1.3. Ввод дерева
- •1.4. Разрушение дерева
- •1.5. Представление выражений с помощью деревьев
- •Контрольные вопросы
- •Задания для практической работы
- •Литература
Контрольные вопросы
Понятие структуры данных стек, очередь, дек.
Представление в памяти структур данных стек, очередь, дек.
Задание структур данных стек, очередь, дек.
Основные операции над структурами данных стек, очередь, дек.
Достоинства и недостатки различного представления в памяти структур данных стек, очередь, дек.
Использование структур данных стек, очередь для решения задач.
Задания для практической работы
Написать класс операций для работы с заданной структурой данных, включив операцию, показывающую содержимое структуры после выполнения какого-либо действия с ней.
Реализовать на основе базовых операций основные операции над статическим стеком.
Реализовать на основе базовых операций основные операции над динамическим стеком.
Реализовать на основе базовых операций операцию “принадлежит ли заданный элемент ” статическому стеку.
Реализовать на основе базовых операций операцию “принадлежит ли заданный элемент ” динамическому стеку.
Реализовать на основе базовых операций основные операции над статической очередью (вид очереди: а, б, в, г).
Реализовать на основе базовых операций основные операции над динамической очередью (вид очереди: а, б).
Реализовать на основе базовых операций операцию “добавить элемент в очередь” для статической очереди с приоритетом (вид очереди: а, б, в, г). На вход такой очереди подается элемент и его приоритет, определяющий место элемента в очереди. В очереди с приоритетом элементы должны располагаться в порядке возрастания или убывания приоритетов.
Реализовать на основе базовых операций операцию “добавить элемент в очередь” для динамической очереди с приоритетом (вид очереди: а, б) см. 8.
Реализовать на основе базовых операций операцию “принадлежит ли заданный элемент ” статической очереди (вид очереди а, б, в, г).
Реализовать на основе базовых операций операцию “принадлежит ли заданный элемент ” динамической очереди (вид очереди: а, б).
Реализовать на основе базовых операций основные операции над статическим деком.
Реализовать на основе базовых операций основные операции над динамическим деком.
Проверьте на равенство две очереди.
Найдите среди трех (4, 5) очередей две одинаковые.
Организовать три очереди с одинаковым количеством элементов, содержащие соответственно имена, отчества и фамилии людей. Составьте очередь из элементов, содержащих наиболее полную информацию о людях, воспользовавшись уже созданными очередями и запросив какую-то дополнительную информацию.
Создайте файл символьного типа. Организовывая очереди по N элементов, создайте файл слов по N символов в каждом.
Создайте файл целого типа. Проанализировав в программе содержимое файла, создайте одну очередь однозначных чисел, а вторую очередь двузначных чисел. Перемножьте соответственные элементы двух очередей и организуйте третью очередь. Результат выведите в текстовый файл.
Используя очередь, проверьте, какие строки текстового файла являются симметричными.
Используя очередь, проверьте на равенство два текстовых файла.
Создать текстовый файл, содержащий текстовую и числовую информацию. Используя стек, создать другой текстовый файл, в котором числа были бы записаны в обратном порядке.
Создать текстовый файл, содержащий текстовую информацию. Используя стек, создать другой текстовый файл, в котором слова были бы записаны в обратном порядке.
Создать текстовый файл, содержащий некоторую информацию. Используя стек, создать другой текстовый файл, в котором строки были бы записаны в обратном порядке.
Создать текстовые файлы, содержащие один текстовую, а другой числовую информацию (количество слов и чисел должно быть одинаковым). Используя стек, создать другой текстовый файл, в котором числа и слова чередовались и были бы записаны в обратном порядке.
Создать текстовые файлы, содержащие один текстовую, а другой числовую информацию (количество слов и чисел должно быть одинаковым). Используя стек, создать другой текстовый файл, в котором числа и слова чередовались, а порядок чисел и слов был бы сохранен.
Создать текстовые файлы, содержащие один текстовую, а другой числовую информацию (количество слов и чисел может быть неодинаковым). Используя стек, создать другой текстовый файл, в котором числа и слова чередовались и были бы записаны в обратном порядке ("лишние" числа или слова были бы записаны в конец файла).
В файле находится текст программы на Си++. Используя стек, проверить правильность вложений операторных скобок ({ }) в этой программе.
В файле записан текст, сбалансированный по круглым скобкам. Требуется для каждой пары соответствующих открывающей и закрывающей скобок напечатать номера их позиций в тексте, упорядочив пары номеров по возрастанию номеров позиций закрывающих скобок. Например, для текста a+(45-f(x)*(b-c)) надо напечатать 8 10, 12 16, 3 17.