Министерство образования Республики Беларусь
УО «Полоцкий государственный университет»
Кафедра технологий программирования
С.В.Кухта
Методические указания
к выполнению РГР по курсу
«СТРУКТУРЫ И АЛГОРИТМЫ ОБРАБОТКИ ДАННЫХ»
для студентов заочной формы обучения
специальности 1–40 01 01 «Программное обеспечение нформационных технологий»
Новополоцк 2011
Введение
Цели расчетно-графической работы:
-
- формирование практических навыков организации и использования при решении задач динамических структур данных;
-
изучение наиболее распространенных алгоритмов решения задач с использованием сложных структур данных.
В контрольной работе требуется выполнить 4 задачи. Задачи выбираются согласно правил, изложенных в разделе 2.
Для проектирования программ разрешается использовать любой язык программирования высокого уровня. Но все структуры данных должны быть созданы с использованием простейших типов данных языка в «ручном» режиме, запрещается использовать встроенные в язык или среду программирования средства. Операции их обработки, например, помещения элемента в стек, извлечения из него, полностью должны быть реализованы студентом.
-
Правила оформления
Соблюдение всех правил оформления является обязательным!
Работа оформляется только на компьютере и распечатывается затем на листах формата А4 и подшивается в папку.
Пояснительная записка к РГР оформляется в среде текстового процессора Microsoft Word. Представляется на листах белой бумаги формата А4 со следующими параметрами страницы: левое поле – 30 мм, правое поле – 15 мм, верхнее и нижнее 20 мм. Шрифт – Times New Roman, размер 14 пт, междустрочный интервал – множитель 1,1. Абзацный отступ – 1,25 см.
Решение задач оформляется с применением стилей заголовков, списков, таблиц, формул, рисунков, с выделением шрифтом важных мест в тексте. В описание решения задачи должны быть вставлены блок-схемы алгоритмов, иллюстрации, поясняющие основные моменты обработки структур данных, копии экранов программы, поясняющие основные этапы решения. В приложении должны прилагаться листинги основных модулей программы.
Структура пояснительной записки к контрольной работе:
Титульный лист
Содержание
1. Задача № 1
1.1. Постановка задачи и ее анализ
1.2. Описание структур данных
1.3. Проектирование программы
1.4. Результаты отладки и тестирования
2. Задача № 2
…
Список использованных источников
Приложения
В конце РГР приводится полный список литературы, которая была использована при выполнении всех заданий контрольной работы. Список составляется в алфавитном порядке по фамилиям авторов с указанием их инициалов. Далее указывается полное название книги, место и год издания, количество страниц. При использовании источников сети Интернет указывается полный адрес Web-сайта и гипертекстового документа. Список литературы должен содержать только названия тех источников, которые действительно были использованы при изучении.
Вмнсте с РГР следует представить диск с файлами программ.
Работа должна быть представлена на кафедру технологий программирования для проверки не позже указанного 14 декабря. В случае, если работа не допущена к защите, студент в этой же папке, не извлекая при этом из нее листы с ошибками, должен исправить все отмеченные ошибки и недочеты и представить ее на повторное рецензирование.
2. Варианты заданий для ргр
Номер варианта V определяется по правилу:
V = n mod 90 + 1,
где n – две последние цифры номера зачетной книжки.
Вариант |
Задача № 1 |
Задача № 2 |
Задача № 3 |
Задача № 4 |
|
Вариант |
Задача № 1 |
Задача № 2 |
Задача № 3 |
Задача № 4 |
|
Вариант |
Задача № 1 |
Задача № 2 |
Задача № 3 |
Задача № 4 |
|
1.12 |
2.31 |
3.20 |
4.2 |
|
|
1.73 |
2.58 |
3.11 |
4.31 |
|
|
1.64 |
2.10 |
3.27 |
4.38 |
|
1.33 |
2.61 |
3.26 |
4.3 |
|
|
1.7 |
2.50 |
3.25 |
4.19 |
|
|
1.16 |
2.47 |
3.22 |
4.1 |
|
1.58 |
2.65 |
3.33 |
4.9 |
|
|
1.62 |
2.54 |
3.33 |
4.18 |
|
|
1.17 |
2.49 |
3.3 |
4.27 |
|
1.75 |
2.14 |
3.27 |
4.19 |
|
|
1.72 |
2.21 |
3.40 |
4.17 |
|
|
1.1 |
2.65 |
3.28 |
4.32 |
|
1.54 |
2.32 |
3.7 |
4.45 |
|
|
1.37 |
2.55 |
3.45 |
4.7 |
|
|
1.26 |
2.57 |
3.18 |
4.5 |
|
1.59 |
2.64 |
3.34 |
4.14 |
|
|
1.67 |
2.30 |
3.31 |
4.4 |
|
|
1.6 |
2.57 |
3.16 |
4.28 |
|
1.53 |
2.69 |
3.8 |
4.28 |
|
|
1.34 |
2.26 |
3.13 |
4.39 |
|
|
1.63 |
2.25 |
3.31 |
4.10 |
|
1.67 |
2.1 |
3.19 |
4.23 |
|
|
1.68 |
2.18 |
3.6 |
4.27 |
|
|
1.49 |
2.52 |
3.39 |
4.12 |
|
1.11 |
2.33 |
3.23 |
4.8 |
|
|
1.23 |
2.44 |
3.14 |
4.35 |
|
|
1.64 |
2.47 |
3.32 |
4.8 |
|
1.32 |
2.24 |
3.36 |
4.44 |
|
|
1.35 |
2.56 |
3.6 |
4.10 |
|
|
1.27 |
2.53 |
3.41 |
4.6 |
|
1.60 |
2.70 |
3.32 |
4.24 |
|
|
1.24 |
2.13 |
3.44 |
4.36 |
|
|
1.22 |
2.38 |
3.29 |
4.11 |
|
1.10 |
2.43 |
3.35 |
4.1 |
|
|
1.69 |
2.34 |
3.8 |
4.11 |
|
|
1.21 |
2.59 |
3.13 |
4.33 |
|
1.61 |
2.40 |
3.1 |
4.23 |
|
|
1.2 |
2.45 |
3.15 |
4.37 |
|
|
1.57 |
2.70 |
3.39 |
4.3 |
|
1.59 |
2.6 |
3.18 |
4.43 |
|
|
1.36 |
2.2 |
3.20 |
4.15 |
|
|
1.45 |
2.27 |
3.17 |
4.7 |
|
1.9 |
2.54 |
3.43 |
4.17 |
|
|
1.18 |
2.23 |
3.5 |
4.38 |
|
|
1.66 |
2.56 |
3.29 |
4.37 |
|
1.52 |
2.48 |
3.9 |
4.22 |
|
|
1.37 |
2.46 |
3.26 |
4.18 |
|
|
1.44 |
2.3 |
3.28 |
4.34 |
|
1.8 |
2.53 |
3.35 |
4.40 |
|
|
1.13 |
2.51 |
3.44 |
4.30 |
|
|
1.20 |
2.36 |
3.7 |
4.42 |
|
1.72 |
2.15 |
3.34 |
4.42 |
|
|
1.76 |
2.18 |
3.38 |
4.43 |
|
|
1.3 |
2.37 |
3.45 |
4.12 |
|
1.31 |
2.68 |
3.24 |
4.13 |
|
|
1.46 |
2.5 |
3.22 |
4.24 |
|
|
1.38 |
2.12 |
3.37 |
4.4 |
|
1.53 |
2.7 |
3.17 |
4.41 |
|
|
1.70 |
2.51 |
3.21 |
4.41 |
|
|
1.43 |
2.60 |
3.4 |
4.32 |
|
1.30 |
2.67 |
3.25 |
4.45 |
|
|
1.14 |
2.63 |
3.4 |
4.36 |
|
|
1.77 |
2.55 |
3.42 |
4.2 |
|
1.74 |
2.59 |
3.2 |
4.16 |
|
|
1.23 |
2.22 |
3.42 |
4.39 |
|
|
1.42 |
2.4 |
3.12 |
4.31 |
|
1.38 |
2.16 |
3.43 |
4.5 |
|
|
1.25 |
2.70 |
3.14 |
4.35 |
|
|
1.65 |
2.11 |
3.6 |
4.20 |
|
1.60 |
2.42 |
3.10 |
4.25 |
|
|
1.47 |
2.34 |
3.38 |
4.9 |
|
|
1.19 |
2.28 |
3.3 |
4.30 |
|
1.29 |
2.63 |
3.36 |
4.44 |
|
|
1.71 |
2.29 |
3.19 |
4.34 |
|
|
1.65 |
2.39 |
3.21 |
4.13 |
|
1.68 |
2.9 |
3.16 |
4.20 |
|
|
1.15 |
2.61 |
3.37 |
4.29 |
|
|
1.41 |
2.58 |
3.30 |
4.21 |
|
1.51 |
2.17 |
3.24 |
4.40 |
|
|
1.55 |
2.8 |
3.11 |
4.25 |
|
|
1.40 |
2.64 |
3.2 |
4.14 |
|
1.51 |
2.41 |
3.10 |
4.21 |
|
|
1.48 |
2.71 |
3.15 |
4.33 |
|
|
1.4 |
2.60 |
3.40 |
4.22 |
|
1.50 |
2.62 |
3.12 |
4.26 |
|
|
1.63 |
2.35 |
3.23 |
4.16 |
|
|
1.39 |
2.19 |
3.1 |
4.29 |
|
1.28 |
2.66 |
3.41 |
4.6 |
|
|
1.56 |
2.62 |
3.9 |
4.26 |
|
|
1.5 |
2.20 |
3.30 |
4.15 |
Задача № 1. Разработать программу с реализацией линейных списков
-
Слияние k упорядоченных однонаправленных списков с сохранением характера упорядоченности
-
Написать программу передвижения элемента двунаправленного списка на n позиций вперед и назад
-
Написать программу передвижения элемента однонаправленного списка на n позиций вперед и назад
-
Удалить n-ый элемент из двунаправленного списка
-
Удалить n-ый элемент из однонаправленного списка
-
Создать список содержащий элементы общие для двух двунаправленных списков
-
Упорядочить элементы в двунаправленном списке по возрастанию
-
Упорядочить элементы в однонаправленном списке по возрастанию
-
Удалить каждый второй элемент двунаправленного списка
-
Удалить каждый второй элемент однонаправленного списка
-
Удалить каждый третий элемент двунаправленного списка
-
Удалить каждый третий элемент однонаправленного списка
-
Дан кольцевой список, содержащий 20 фамилий игроков футбольной команды. Разбить игроков на 2 группы по 10 человек. Во вторую группу попадает каждый 12-й человек.
-
Проверить, являются ли элементы списка членами арифметической прогрессии. Если являются – вывести шаг прогрессии, если нет – сообщение об этом.
-
Поменять местами i-ую и j-ую строки разреженной матрицы, реализованной посредством динамического списка.
-
Пусть А и B – две разреженные матрицы, реализованные посредством динамических списков. Размерность матрицы В по обоим измерениям не должна превосходить размерность матрицы А. Проверить, является ли матрица В частью матрицы А и определить координаты верхнего левого угла в матрице А, откуда начинается совпадение с матрицей В. Если матрица А не содержит в себе матрицы В – вернуть пару (–1,–1).
-
Умножить на вектор разреженную матрицу, реализованную посредством динамических списков.
-
Поменять местами i-ую и j-ую строки нижнетреугольной матрицы.
-
Поменять местами i-ый и j-ый столбец верхнетреугольной матрицы.
-
Транспонировать верхнетреугольную матрицу.
-
Даны 2 кольцевых списка, содержащие фамилии спортсменов 2-х фехтовальных команд. Произвести жеребьевку. В первой команде выбирается каждый n-й игрок, а во второй – каждый m-й.
-
Даны 2 кольцевых списка, содержащие фамилии участников лотереи и наименования призов. Выиграет N человек (каждый К-й). Число для пересчета призов – t.
-
Даны 2 кольцевых списка, содержащих фамилии учащихся и номера экзаменационных билетов. Число пересчета для билетов – Е, для учащихся – К. Определить номера билетов, вытащенных учащимися.
-
Элементы однонаправленного списка – вещественные числа. Описать процедуру или функцию, которая: a) вычисляет среднее арифметическое всех элементов списка; b) удаляет из списка элементы со значением меньшим среднего арифметического.
-
Элементы упорядоченного по убыванию списка – вещественные числа. Описать процедуру или функцию, которая: a) вычисляет среднее арифметическое всех элементов списка; b) добавляет в список элемент со значением, вычисленным в предыдущей процедуре (функции), без нарушения упорядоченности.
-
Проверить является ли кольцевой список палиндромом.
-
Удалить из непустого списка L один элемент после каждого вхождения заданного элемента E, если такой есть и он отличен от E. Элементы списка – записи с полями: номер паспорта, ФИО, год рождения, пол. Список реализовать посредством массива.
-
Удалить из непустого кольцевого списка L один элемент после каждого вхождения заданного элемента E, если такой есть и он отличен от E. Считать, что последний элемент является соседом первого. Элементы списка – записи с полями: номер паспорта, ФИО, год рождения, пол. Список реализовать посредством указателей.
-
Заменить каждый элемент списка, состоящий из символов, на предыдущий символ алфавита.
-
Проверить является ли линейный однонаправленный список палиндромом.
-
Определить функцию, которая возвращает первый элемент, входящий в оба списка, в противном случае – сообщение об этом.
-
Написать программу для циклического сдвига двунаправленного списка вправо на заданное число элементов. Например: список [6, 5, 4, 3, 2, 1], циклически сдвинутый вправо на 2 элемента, преобразуется в список [2, 1, 6, 5, 4, 3].
-
Написать программу для перевода списка арабских чисел (от 1 до 10) в список римских чисел. Например: список [1, 2, 3] преобразуется в список [“I”, “II”, “III”].
-
Написать программу для циклического сдвига однонаправленного списка вправо на заданное число элементов. Например: список [6, 5, 4, 3, 2, 1], циклически сдвинутый вправо на 2 элемента, преобразуется в список [2, 1, 6, 5, 4, 3].
-
Составить программу генерации списка ста случайных двухбуквенных слов из больших латинских букв (A..Z – коды 65..90). Разработать функцию расчета числа элементов списка, содержащих заданную букву. Все операции со списком реализовать подпрограммами.
-
Создать двусвязный список, содержащий не менее двух элементов. Продублировать в списке все элементы с нечетными номерами за исключением отрицательных значений (новые элементы добавлять перед существующими элементами с такими же значениями). Операции со списком реализовать подпрограммами.
-
В списке хранится информация о студентах: фамилия, группа, пол, оценка по математике. Удалить из списка информацию о студентах мужского пола, имеющих оценку ниже 4 баллов. Операции со списком реализовать подпрограммами.
-
Ввести натуральное число N. Создать два упорядоченных двусвязных списка из N элементов. Построить третий список, который содержит без повторений элементы, одновременно содержащиеся в обоих списках. Операции со списком реализовать подпрограммами.
-
После поступления в университет в линейном списке хранится информация о студентах: фамилия, что окончил (школа, лицей, колледж), какой иностранный язык изучал. Составить программу, формирующую списки студентов, окончивших лицеи, отдельно по каждому иностранному языку. Операции со списком реализовать подпрограммами.
-
Создать кольцевой список вещественных чисел. Заменить в нем каждый элемент, начиная с начального, на его среднее арифметическое с предыдущим и последующим элементом. Операции со списком реализовать подпрограммами.
-
Дана вещественная матрица nm. Организовать линейный список строк матрицы, упорядоченных по невозрастанию значений наибольших элементов строк. Операции со списком реализовать подпрограммами.
-
Линейный список записей содержит шестизначные номера телефонов и информацию о сумме задолженности абонента данного телефона. Записи об одном абоненте могут повторяться. Программа должна выводить суммарную задолженность абонента по введенному номеру телефона. Операции со списком реализовать подпрограммами.
-
Составить программу, которая подсчитывает количество элементов списка, оканчивающиеся цифрой «1», меняет местами первый и последний из таких элементы. Все операции со списком реализовать подпрограммами.
-
При поступлении на музыкально-педагогический факультет на абитуриентов собираются сведения: фамилия, музыкальный инструмент. Для поступления необходимо сдать экзамен по специальности. Составить списки для данного экзамена в зависимости от музыкального инструмента. Все операции со списком реализовать подпрограммами.
-
Имеются 3 списка, содержащие целые числа. Объединить эти списки в один список без повторений элементов, расположив элементы сначала 1-го списка, потом 2-го и т.д..
-
Ввести натуральное N. Ввести N строк и занести их в двусвязный список L. Отсортировать L методом вставок, используя при сортировке только присваивания указателей (не строк). Все операции со списком реализовать подпрограммами.
-
Пусть дан линейный список. После каждого нулевого элемента добавить предшествующую ему часть списка.
-
Сформировать кольцевой линейный список целых чисел. Требуется переставить элементы списка так, чтобы в начале шла группа элементов, больших того элемента, который в исходном списке располагался на первом месте, затем – сам этот элемент, далее – группа элементов, меньших или равных ему.
-
С помощью однонаправленных списков реализовать обработку многочлена от переменной х произвольной степени с целыми коэффициентами. Причем, его одночлены могут быть и не упорядочены по степеням х, а одночлены одной степени могут повторяться. Возможный пример: –8х4–74х+7х4+5–2х3. Требуется привести подобные члены в этом многочлене и упорядочить по убыванию степеней х.
-
Создать однонаправленный список, содержащий слова предложения, введенного с клавиатуры. Затем преобразовать список, оставив в нем только слова, длина которых меньше 5.
-
Создать односвязный список, хранящий целые числа. Переставить в обратном порядке элементы между первым и последним вхождением заданного элемента Е, если Е входит в список не менее двух раз.
-
Составить программу, которая формирует однонаправленный список L, включив в него по одному разу элементы, которые входят в один из списков L1 и L2, но в то же время не входят в другой. Списки реализовать массивами.
-
Составить программу, которая формирует двунаправленный список L, включив в него по одному разу элементы, которые входят в один из списков L1 и L2, но в то же время не входят в другой. Списки реализовать через указатели.
-
Удалить из односвязного списка элементы, встречающиеся ровно два раза. Список реализовать массивами.
-
Удалить из односвязного списка элементы, встречающиеся ровно два раза. Список реализовать через указатели.
-
Написать программу, позволяющую ввести последовательность натуральных чисел и создать из нее двунаправленный список. Длина последовательности n. Обеспечить с помощью списка вычисление суммы и произведения вида x1*xn + x2*xn-1 + ... + xn*x1
-
Написать программу, позволяющую ввести последовательность натуральных чисел и создать из нее кольцевой список. Длина последовательности n. Обеспечить с помощью списка вычисление суммы и произведения вида (x1+xn)*(x2+xn-1)* ... *(xn+x1)
-
Реализовать логическую функцию simm (s, i, j), проверяющую, является ли симметричной часть двунаправленного списка s, начинающаяся i-м и заканчивающаяся j-м элементами. Функцию применить для списка записей с полями: номер паспорта, ФИО, год рождения, пол. Список реализовать посредством указателей.
-
Реализовать логическую функцию simm (s, i, j), проверяющую, является ли симметричной часть линейного списка s, начинающаяся i-м и заканчивающаяся j-м элементами. Функцию применить для списка чисел. Список реализовать посредством массива.
-
Даны две разреженные квадратные матрицы A и B порядка n. Получить матрицу C = A+B. Для представления разреженной матрицы использовать двусвязный циклический список. Каждое звено списка состоит из пяти полей: номер строки ненулевого элемента; номер столбца ненулевого элемента; значение элемента; ссылка на предыдущий ненулевой элемент в этой же строке; ссылка на предыдущий ненулевой элемент в этом же столбце. Каждая строка (и столбец) имеют заглавное звено, соответствующее ссылочное поле которого содержит ссылку на последний ненулевой элемент в строке (в столбце).
-
Написать библиотеку функций для работы со свободными матрицами. Матрицы представлять в виде динамически выделяемых массивов. Предусмотреть следующие операции для работы с матрицами: создание/удаление матрицы, ввод/вывод, добавление/удаление столбца, добавление/удаление строки, установка/получение элемента матрицы, выделение подматрицы.
-
Написать библиотеку функций для работы с множествами. Множества представлять в виде неупорядоченных двусвязных списков. Предусмотреть следующие операции для работы с множествами: создание/удаление, ввод/вывод, проверка вхождения, объединение, пересечение, разность.
-
Написать библиотеку функций для работы с множествами. Множества представлять в виде упорядоченных односвязных списков. Предусмотреть следующие операции для работы с множествами: создание/удаление, ввод/вывод, проверка вхождения, объединение, пересечение, разность.
-
Написать библиотеку функций для работы с многочленами одной переменной. Отображения представлять в виде неупорядоченных массивов пар («степень», «коэффициент»). Предусмотреть следующие операции для работы с многочленами: создание/удаление, ввод/вывод, нахождение значения, сложение, вычитание, умножение, деление.
-
Написать библиотеку функций для работы с многочленами одной переменной. Отображения представлять в виде упорядоченных по степени массивов пар («степень», «коэффициент»). Предусмотреть следующие операции для работы с многочленами: создание/удаление, ввод/вывод, нахождение значения, сложение, вычитание, умножение, деление.
-
Написать библиотеку функций для работы с многочленами одной переменной. Отображения представлять в виде неупорядоченных односвязных списков пар («степень», «коэффициент»). Предусмотреть следующие операции для работы с многочленами: создание/удаление, ввод/вывод, нахождение значения, сложение, вычитание, умножение, деление.
-
Написать библиотеку функций для работы с многочленами одной переменной. Отображения представлять в виде упорядоченных по степени односвязных списков пар («степень», «коэффициент»). Предусмотреть следующие операции для работы с многочленами: создание/удаление, ввод/вывод, нахождение значения, сложение, вычитание, умножение, деление.
-
Написать библиотеку функций для работы с многочленами одной переменной. Отображения представлять в виде неупорядоченных двусвязных списков пар («степень», «коэффициент»). Предусмотреть следующие операции для работы с многочленами: создание/удаление, ввод/вывод, нахождение значения, сложение, вычитание, умножение, деление.
-
Написать библиотеку функций для работы с многочленами одной переменной. Отображения представлять в виде упорядоченных по степени двусвязных списков пар («степень», «коэффициент»). Предусмотреть следующие операции для работы с многочленами: создание/удаление, ввод/вывод, нахождение значения, сложение, вычитание, умножение, деление.
-
Написать библиотеку функций для работы с целыми числами сколь угодно большой длины. Отображения представлять в виде односвязных списков цифр. Предусмотреть следующие операции для работы с числами: создание/удаление, ввод/вывод, сложение, вычитание, умножение, деление.
-
Написать библиотеку функций для работы с целыми числами сколь угодно большой длины. Отображения представлять в виде двусвязных списков цифр. Предусмотреть следующие операции для работы с числами: создание/удаление, ввод/вывод, сложение, вычитание, умножение, деление.
-
Написать библиотеку функций для работы с множествами отрезков числовой прямой. Множества представлять в виде неупорядоченных односвязных списков, который содержат края отрезков. Предусмотреть следующие операции для работы с множествами: создание/удаление, ввод/вывод, объединение, пересечение, разность.
-
Написать библиотеку функций для работы с множествами отрезков числовой прямой. Множества представлять в виде упорядоченных по первой точке односвязных списков, который содержат края отрезков. Предусмотреть следующие операции для работы с множествами: создание/удаление, ввод/вывод, объединение, пересечение, разность.
-
Написать библиотеку функций для работы с множествами отрезков числовой прямой. Множества представлять в виде неупорядоченных двусвязных списков, который содержат края отрезков. Предусмотреть следующие операции для работы с множествами: создание/удаление, ввод/вывод, объединение, пересечение, разность.
-
Написать библиотеку функций для работы с множествами отрезков числовой прямой. Множества представлять в виде упорядоченных по первой точке двусвязных списков, который содержат края отрезков. Предусмотреть следующие операции для работы с множествами: создание/удаление, ввод/вывод, объединение, пересечение, разность.
-
Написать библиотеку функций для работы с текстом. Текст представлять в виде односвязного списка, который содержит отдельные строки. Предусмотреть следующие операции для работы с текстом: создание/удаление, ввод/вывод, поиск, удаление/вставка символов, удаление/вставка строк, конкатенация, вырезка части текста.
-
Написать библиотеку функций для работы с текстом. Текст представлять в виде двусвязного списка, который содержит отдельные строки. Предусмотреть следующие операции для работы с текстом: создание/удаление, ввод/вывод, поиск, удаление/вставка символов, удаление/вставка строк, вставка одного текста внутрь другого, склейка/расзделение строк.
Задача № 2. Разработать программу с реализацией стека, очереди или хеш-таблицы
-
Слияние k упорядоченных стеков с сохранением характера упорядоченности
-
Удалить каждый третий элемент стека
-
Удалить каждый третий элемент очереди
-
Удалить каждый второй элемент стека
-
Удалить каждый второй элемент очереди
-
Удалить наименьший элемент стека
-
Удалить наибольший элемент очереди
-
Удалить n-ый элемент стека
-
Удалить n-ый элемент очереди
-
Проверить, являются ли одинаковыми два стека М1 и М2, один из которых реализован посредством массивов, другой – посредством динамических указателей.
-
Проверить, являются ли одинаковыми две очереди М1 и М2, реализованных посредством кольцевых массивов.
-
Проверить, являются ли одинаковыми две открытых хеш-таблицы М1 и М2 (хеш функция h(k)= k mod n, где k – элемент, n – количество строк таблицы).
-
Проверить, являются ли одинаковыми две закрытых хеш-таблицы М1 и М2 (хеш функция h(k)= k mod n, где k – элемент, n – количество строк таблицы). Количество столбцов хеш-таблицы – 3.
-
Проверить, являются ли элементы стека, реализованного массивом, членами арифметической прогрессии. Если являются – вывести шаг прогрессии, если нет – сообщение об этом.
-
Проверить, являются ли элементы стека, реализованного динамическими указателями, членами арифметической прогрессии. Если являются – вывести шаг прогрессии, если нет – сообщение об этом.
-
Создать текстовый файл, содержащий текстовую и числовую информацию. Используя стек, создать другой текстовый файл, в котором числа были бы записаны в обратном порядке.
-
Проверить, являются ли элементы очереди, реализованной циклическим массивом, членами арифметической прогрессии. Если являются – вывести шаг прогрессии, если нет – сообщение об этом.
-
Проверить, являются ли элементы очереди, реализованной динамическими указателями, членами арифметической прогрессии. Если являются – вывести шаг прогрессии, если нет – сообщение об этом.
-
Пусть в очереди хранится следующая информация: наименование процесса, его приоритет, время выполнения. Упорядочить процессы очереди по возрастанию приоритета и убыванию времени выполнения.
-
Элементы стека – вещественные числа. Описать процедуру или функцию, которая: a) вычисляет среднее арифметическое всех элементов стека; b) удаляет из стека элементы со значением меньшим среднего арифметического.
-
Создать процедуры или функции, реализующие методы работы с хеш-таблицей: инициализация, добавление элемента, удаление элемента, поиск. Кроме того, при заполнении хеш-таблицы выше заданного уровня размер хеш-таблицы должен автоматически увеличиваться.
-
С использованием стеков разработать программу перевода инфиксного выражения в постфиксную форму. В выражении могут применяться переменные, целые и вещественные числа, знаки арифметических операций, стандартные математические функции, скобки.
-
С использованием стеков разработать программу перевода инфиксного выражения в префиксную форму. В выражении могут применяться переменные, целые и вещественные числа, знаки арифметических операций, стандартные математические функции, скобки.
-
Удалить элементы очереди В, повторяющиеся в очереди А несколько раз.
-
Заменить каждый элемент стека, состоящий из символов, на следующий символ алфавита.
-
Удалить из стека L один элемент после каждого вхождения заданного элемента E, если такой есть и он отличен от E. Элементы стека – записи с полями: номер паспорта, ФИО, год рождения, пол. Стек реализовать посредством массива.
-
Удалить из стека L один элемент после каждого вхождения заданного элемента E, если такой есть и он отличен от E. Элементы стека – записи с полями: номер паспорта, ФИО, год рождения, пол. Стек реализовать посредством динамических указателей.
-
Удалить из стека элементы со значением, попадающим в заданный диапазон.
-
Определить функцию, которая возвращает первый элемент, входящий в оба стека, в противном случае – сообщение об этом.
-
Написать программу для циклического сдвига очереди вправо на заданное число элементов. Например: очередь [6, 5, 4, 3, 2, 1], циклически сдвинутая вправо на 2 элемента, преобразуется в очередь [2, 1, 6, 5, 4, 3].
-
Даны три стека, наполненные натуральными числами и четвертый стек пустой. В четвертый стек поместить три числа, являющиеся максимальными числами в первом, втором и третьем стеке. В четвертом стеке числа расположить в порядке неубывания, а в первых трех стеках порядок расположения оставшихся чисел оставить прежним.
-
Реализовать логическую функцию simm (s, i, j), проверяющую, является ли симметричной часть дека s, начинающаяся i-м и заканчивающаяся j-м элементами. Функцию применить для дека записей с полями: номер паспорта, ФИО, год рождения, пол.
-
Реализовать логическую функцию simm (s, i, j), удаляющую из очереди с приоритетами s элементы с приоритетами, начинающающимися i-м и заканчивающиеся j-м значениями. Функцию применить для очереди, хранящей следующую информацию: номер паспорта, ФИО, год рождения, пол. Приоритет расчитывается по следующему правилу: если возраст более 60 лет и пол – женский, то приоритет наивысший; для мужчин в возрасте менее 50 лет наименьший; для всех остальных – (возраст) mod 41.
-
Даны три открытых хеш-таблицы (хеш функция h(k)= k mod n, где k – элемент, n – количество строк таблицы), наполненные натуральными числами. В четвертую таблицу поместить для каждого сегмента числа, являющиеся максимальными числами в нем.
-
Даны три закрытых хеш-таблицы (хеш функция h(k)= k mod n, где k – элемент, n – количество сегментов), наполненные натуральными числами. В четвертую таблицу поместить для каждого сегмента числа, являющиеся максимальными числами в ней. Учесть при этом возможные коллизии в исходных таблицах.
-
Преобразовать хеш-таблицу в бинарное дерево (хеш функция h(k)= k mod n, где k – элемент, n – количество строк таблицы).
-
Преобразовать бинарное дерево в хеш-таблицу (хеш функция h(k)= k mod n, где k – элемент, n – количество строк таблицы).
-
Реализовать в виде программы заданный набор операций (принадлежность, объединение, разность, пересечение) с использованием управляющей структуры данных – хеш-таблицы (хеш функция h(k)= k mod n, где k – элемент, n – количество строк таблицы).
-
Найти максимальный элемент числового множества с использованием управляющей структуры данных – хеш-таблицы (хеш-функция методом умножения (книга Т.Кормена, Ч.Лейзера. Алгоритмы. Построение и анализ. Стр.233)).
-
Напишите программу, удаляющую из стека его медиану. Медианой стека из N элементов называется элемент, значение которого меньше (или равно) половины N элементов и больше (или равно) другой половины. Например, медиана стека 16 22 99 95 18 87 10 есть 18.
-
Дана последовательность символов, оканчивающаяся точкой. Используя двунаправленный список, переставить в обратном порядке все символы между первым и последним вхождениями заданного символа.
-
Элементы упорядоченного по убыванию стека – вещественные числа. Описать процедуру или функцию, которая: a) вычисляет среднее арифметическое всех элементов стека; b) добавляет в стек элемент со значением, вычисленным в предыдущей процедуре (функции), без нарушения упорядоченности.
-
Типизированный файл хранит каталог книг в библиотеке. Составить программу, формирующую структуру данных стек для книг А.С.Пушкина, хранящихся в библиотеке, по возрастанию года издания. Операции со стеком реализовать подпрограммами.
-
Написать библиотеку функций для работы с целыми числами сколь угодно большой длины. Отображения представлять в виде односвязных стеков цифр. Предусмотреть следующие операции для работы с числами: создание/удаление, ввод/вывод, сложение, вычитание, умножение, деление.
-
Написать библиотеку функций для работы с целыми числами сколь угодно большой длины. Отображения представлять в виде деков цифр. Предусмотреть следующие операции для работы с числами: создание/удаление, ввод/вывод, сложение, вычитание, умножение, деление.
-
Написать библиотеку функций для работы с целыми числами сколь угодно большой длины. Отображения представлять в виде очередей цифр. Предусмотреть следующие операции для работы с числами: создание/удаление, ввод/вывод, сложение, вычитание, умножение, деление.
-
Написать программу, позволяющую ввести последовательность натуральных чисел и создать из нее дек. Длина последовательности n. Обеспечить вычисление суммы и произведения вида x1*xn + x2*xn-1 + ... + xn*x1
-
Написать программу, позволяющую ввести последовательность натуральных чисел и создать из нее очередь. Длина последовательности n. Обеспечить вычисление суммы и произведения вида (x1+xn)*(x2+xn-1)* ... *(xn+x1)
-
Используя структуру данных «Очередь» реализовать телефонную книгу. Составить программу, формирующую отдельные очереди абонентов, чьи телефонные номера начинаются с одинаковых двух цифр. Операции с очередью реализовать подпрограммами.
-
Реализовать очередь с приоритетами. Каждый новый элемент попадает в очередь с неким приоритетом. Если его приритет выше всех уже имевшихся элементов очереди, он попадает сразу в начало очереди. Если в очереди есть элементы с таким же приоритетом, как у него, он помещается сразу за последним из имевшихся с тем же приоритетом.
-
Составить программу генерации очереди ста случайных двухбуквенных слов из малых латинских букв (a..z – коды 97..122). Разработать процедурe обмена местами заданного (номером) и первого элементов очереди. Все операции с очередью реализовать подпрограммами.
-
Разработать программу, которая объединяет содержимое двух числовых стеков по следующему правилу: из первого стека берутся только элементы, стоящие на четных местах, и помещаются на позицию с номером на единицу больше; из второго стека берутся только отрицательные элементы и помещаются на позиции с нечетными номерами. Если в первом стеке не окажется необходимого количества элементов, то в результирующий стек записать в оставшиеся позиции «1», если во втором – то «2». Все операции со стеком реализовать подпрограммами.
-
Имеются 3 закрытых хеш-таблицы, содержащие целые числа. Используется хеш-функция i mod 8, где i – число. Объединить эти хеш-таблицы в одну без повторений элементов, расположив элементы сначала 1-й таблицы, потом 2-й и т.д..
-
Имеются 3 открытых хеш-таблицы, содержащие целые числа. Используется хеш-функция i mod 8, где i – число. Объединить эти хеш-таблицы в одну без повторений элементов, расположив элементы сначала 1-й таблицы, потом 2-й и т.д..
-
Дан файл целых чисел. Создать стек, содержащий длины всех серий исходного файла. Серией называется набор последовательно расположенных одинаковых элементов, длиной серии – количество этих элементов. Например, для исходного файла с элементами 1, 5, 5, 5, 4, 4, 5 содержимое стека должно быть следующим: 1, 3, 2, 1.
-
В стеке хранится информация о станках: наименование станка, время простоя в месяц, время работы в месяц. Составить программу, определяющую общее время простоя на заводе, и удаляющую из стека информацию о станках, не имеющих простоя.
-
Создать список А целых чисел. Занести в очередь В порядковые номера отрицательных элементов списка А, а затем удалить из нее минимальный элемент. Операции со списком и очередью реализовать подпрограммами.
-
Дан текстовый файл, содержащий даты в формате «день/месяц/год», причем под день и месяц отводится по две позиции, а под год – четыре (например, «16/04/2001»). Сформировать очередь, содержащую весенние даты, упорядоченные только по месяцу и числу.
-
Создать стек из целых чисел. Преобразовать стек, оставив в нем из группы подряд идущих одинаковых элементов только один.
-
Создать два стека S1 и S2 из целых чисел. Сформировать стек S, включив в него по одному разу элементы, которые входят в стек S1, но не входят в стек S2.
-
Дан текстовый файл. Подсчитать число появлений в нем каждой строчной (то есть маленькой) русской буквы и создать очередь, элементы которой имеют вид «<буква>–<число ее появлений>» (например, «а–25»). Буквы, отсутствующие в тексте, в очередь не включать.
-
Создать стек, хранящий целые числа. Переставить в обратном порядке элементы между первым и последним вхождением заданного элемента Е, если Е входит в стек не менее двух раз.
-
Удалить из стека элементы, лежащие в заданном диапазоне, посчитать их среднее арифметическое. Все операции со стеком реализовать подпрограммами.
-
Удалить из очереди элементы, лежащие в заданном диапазоне, посчитать их среднее арифметическое. Все операции с очередью реализовать подпрограммами.
-
Используя стек, преобразовать десятичное вещественное число в систему счисления с заданным основанием.
-
В файле WORK содержатся результаты работы цеха за день. Элемент файла включает: шифр изделия (8-символьный код), наименование изделия, количество (штук). Построить открытую хеш-таблицу, содержащую результаты работы за день, считая ключом шифр изделия. Элемент таблицы имеет ту же структуру, что и элемент файла. Содержащаяся в файле информация с равными ключами должна быть помещена в таблицу один раз с общим количеством штук изделия.
-
В файле WORK содержатся результаты работы цеха за день. Элемент файла включает: шифр изделия (8-символьный код), наименование изделия, количество (штук). Построить закрытую хеш-таблицу (7 сегментов, 4 столбца), содержащую результаты работы за день, считая ключом шифр изделия. Элемент таблицы имеет ту же структуру, что и элемент файла. Содержащаяся в файле информация с равными ключами должна быть помещена в таблицу один раз с общим количеством штук изделия.
-
В спортивных соревнованиях участвуют n команд. В файле SPORT содержатся прогнозы результатов соревнований. Каждый прогноз включает номер команды, занявшей первое место, номер команды, занявшей последнее место, номера команд, входящих в первую тройку сильнейших команд. Построить открытую хеш-таблицу, содержащую проценты голосов, отданных командам-претендентам на первое место, командам-претендентам на последнее место и проценты голосов, отданных командам-претендентам на первую тройку.
-
В спортивных соревнованиях участвуют n команд. В файле SPORT содержатся прогнозы результатов соревнований. Каждый прогноз включает номер команды, занявшей первое место, номер команды, занявшей последнее место, номера команд, входящих в первую тройку сильнейших команд. Построить закрытую хеш-таблицу (5 сегментов, 3 столбца), содержащую проценты голосов, отданных командам-претендентам на первое место, командам-претендентам на последнее место и проценты голосов, отданных командам-претендентам на первую тройку.
-
Написать библиотеку функций для работы с множествами отрезков числовой прямой. Множества представлять в виде упорядоченных по первой точке стеков, который содержат края отрезков. Предусмотреть следующие операции для работы с множествами: создание/удаление, ввод/вывод, объединение, пересечение, разность.
-
Написать библиотеку функций для работы с множествами отрезков числовой прямой. Множества представлять в виде упорядоченных по первой точке деков, который содержат края отрезков. Предусмотреть следующие операции для работы с множествами: создание/удаление, ввод/вывод, объединение, пересечение, разность.
Задача № 3. Разработать программу с реализацией дерева указанного вида
3.1. Реализовать в виде программы заданный набор операций (поиск, объединение, разность, пересечение) с использованием управляющей структуры данных – двоичного дерева (дерева двоичного поиска).
3.2. Реализовать в виде программы заданный набор операций (поиск, объединение, разность, пересечение) с использованием управляющей структуры данных – АВЛ-дерева.
3.3. Реализовать в виде программы заданный набор операций (поиск, объединение, разность, пересечение) с использованием управляющей структуры данных – 2-3-дерева.
3.4. Обход бинарного дерева по уровням: сначала корень, затем все вершины на уровень ниже и т.д.
3.5. Реализовать в виде программы заданный набор операций (поиск, объединение, разность, пересечение) с использованием управляющей структуры данных – красно-черное дерево.
3.6. Реализовать в виде программы заданный набор операций (поиск, объединение, разность, пересечение) с использованием управляющей структуры данных – B-дерево порядка k=3.
3.7. Построить дерево по математическому выражению для проверки его правильности. В выражении могут применяться переменные, целые и вещественные числа, знаки арифметических операций, стандартные математические функции, скобки.
3.8. Вывести бинарное дерево в виде строки так, что если A – отец, а B, C – сыновья, то строка имеет вид ((B)(A)(C)).
3.9. Написать библиотеку функций для работы с множествами отрезков числовой прямой. Множества представлять в виде упорядоченных по первой точке бинарных деревьев поиска, который содержат края отрезков. Предусмотреть следующие операции для работы с множествами: создание/удаление, ввод/вывод, объединение, пересечение, разность.
3.9. Вершины бинарного дерева – вещественные числа. Описать процедуру или функцию, которая: a) вычисляет среднее арифметическое всех вершин дерева; b) добавляет в дерево вершину со значением, вычисленным в предыдущей процедуре (функции).
3.10. Вершины 2-3–дерева – вещественные числа. Описать процедуру или функцию, которая: a) вычисляет среднее арифметическое всех вершин дерева; b) добавляет в дерево вершину со значением, вычисленным в предыдущей процедуре (функции).
3.11. Вершины 2-3–дерева – вещественные числа. Описать процедуру или функцию, которая: a) вычисляет среднее арифметическое всех вершин дерева; b) удаляет из дерева вершины со значением меньшим среднего арифметического.
3.12. Вершины АВЛ–дерева – вещественные числа. Описать процедуру или функцию, которая: a) вычисляет среднее арифметическое всех вершин дерева; b) удаляет из дерева вершины со значением меньшим среднего арифметического.
3.13. Вершины АВЛ–дерева – вещественные числа. Описать процедуру или функцию, которая: a) вычисляет среднее арифметическое всех вершин дерева; b) добавляет в дерево вершину со значением, вычисленным в предыдущей процедуре (функции).
3.14. Записи вершин АВЛ–дерева – вещественные числа. Описать процедуру, которая удаляет все вершины со значением в указанном диапазоне.
3.15. Записи вершин 2-3–дерева – вещественные числа. Описать процедуру, которая удаляет все вершины со значением в указанном диапазоне.
3.16. Записи вершин бинарного дерева – вещественные числа. Описать процедуру, которая удаляет все вершины с отрицательными записями.
3.17. Записи вершин бинарного дерева – вещественные числа. Описать процедуру или функцию, которая: a) находит максимальное или минимальное значение записей вершин непустого дерева; b) печатает записи из всех листьев дерева.
3.18. Записи вершин АВЛ–дерева – вещественные числа. Описать процедуру, которая печатает записи вершин из всех листьев дерева.
3.19. Описать процедуру ЕQUAL(T1,T2), проверяющую на равенство АВЛ–деревья Т1 и Т2 (деревья равны, если ключи и записи вершин одного дерева равны соответственно ключам и записям другого дерева).
3.20. Описать процедуру ЕQUAL(T1,T2), проверяющую на равенство 2-3–деревья Т1 и Т2 (деревья равны, если ключи и записи вершин одного дерева равны соответственно ключам и записям другого дерева).
3.21. Описать процедуру ЕQUAL(T1,T2), проверяющую на равенство бинарные деревья Т1 и Т2 (деревья равны, если ключи и записи вершин одного дерева равны соответственно ключам и записям другого дерева).
3.22. Описать процедуру, удаляет все листья АВЛ–дерева, попадающие в заданный диапазон значений.
3.23. Описать процедуру, которая удаляет все листья 2-3–дерева, попадающие в заданный диапазон значений.
3.24. Описать процедуру, которая удаляет все листья бинарного дерева, попадающие в заданный диапазон значений.
3.25. Реализовать в виде программы заданный набор операций (принадлежность, поиск, объединение, разность, пересечение) с использованием управляющей структуры данных – B-дерево порядка k=4.
3.26. Определить функцию для проверки упорядоченности бинарного дерева.
3.27. Организовать бинарное дерево для вычисления биномиальных коэффицииентов, используя треугольник Паскаля:
Программа должна для заданного номера уровня n вывести значения всех коэффициентов.
3.28. Подсчитать число узлов на k-ом уровне бинарного дерева. Корень считать узлом 1-го уровня.
3.29. Построить Trie-дерево. Подсчитать количество слов, начинающихся с заданной последовательности символов.
3.30. Дан текстовый файл, состоящий из слов, разделенных пробелами. Построить Trie-дерево, которое содержит перевернутые слова из файла. Найти все слова, имеющие заданное окончание.
3.31. Построить Trie-дерево. Подсчитать количество слов, содержащих заданную букву.
3.32. Построить Trie-дерево. Подсчитать количество слов, содержащих заданное количество согласных букв.
3.33. Построить Trie-дерево. Вывести все формы данного слова, содержащиеся в дереве. Формой слова считается некоторое другое слово, отличающееся от заданного не более чем на n последних символов. n вводит пользователь.
3.34. Построить Trie-дерево. Удалить из него все слова, которые содержат указанную подстроку.
3.35. Для заданного Trie-дерева построить Trie-дерево, в котором все слова расположены в обратном порядке.
3.36. Из Trie-дерева удалить все слова четной длины.
3.37. Посчитать в Trie-дереве количество слов, оканчивающихся на согласную букву.
3.38. Выполнить операцию объединения двух АВЛ-деревьев. Под объединением понимается дерево, содержащее вершины обоих деревьев дерева (без дублирования).
3.39. Выполнить операцию объединения двух 2–3-деревьев. Под объединением понимается дерево, содержащее вершины обоих деревьев дерева (без дублирования).
3.40. Выполнить операцию пересечения двух АВЛ-деревьев. Под пересечением понимается дерево, содержащее вершины первого дерева, входящие и во второе.
3.41. Выполнить операцию пересечения двух 2–3-деревьев. Под пересечением понимается дерево, содержащее вершины первого дерева, входящие и во второе.
3.42. Выполнить операцию разности двух АВЛ-деревьев. Под разностью понимается дерево, содержащее вершины первого дерева, не входящие во второе.
3.43. Напишите программу, которая вводит арифметическое выражение, состоящее из констант и арифметических операций, стандартных математических функций и строит для него бинарное дерево. Осуществив прохождение дерева, выдайте префиксную, инфиксную и постфиксную формы выражения.
3.44. Придумайте строку из 30 символови и закодируйте ее с помощью алгоритма Хаффмана.
3.45. Написать библиотеку функций для работы с множествами. Множества представлять в виде бинарных деревьев поиска. Предусмотреть следующие операции для работы с множествами: создание/удаление, ввод/вывод, проверка вхождения, объединение, пересечение, разность, генерация множества подмножеств.
Задача № 4. Разработать программу, реализующую указанный алгоритм сортировки или поиска в одномерном массиве или файле. Графы
4.1. Алгоритм лексикографической сортировки последовательности цепочек одинаковой длины
4.2. Алгоритм лексикографической сортировки последовательности цепочек различной длины
4.3. Сортировка деревом
4.4. Поиск медианы массива
4.5. Поиск k-статистики массива
4.6. Сортировка Шелла
4.7. Параллельная сортировка Бэтчера
4.8. Внешняя сортировка прямым слиянием
4.9. Внешняя сортировка естественным слиянием
4.10. Внешняя сортировка сбалансированным трехпутевым слиянием
4.11. В ООН имеется полный перечень всех стран, который включает в себя: название, континент, столицу, площадь, численность населения, государственный строй. Вывести названия и столицы государств в порядке убывания плотности населения. Применить многопутевое двухфазное естественное сбалансированное слиянеие.
4.12. Алгоритм Рабина-Карпа поиска подстроки в строке (книга Т.Кормена, Ч.Лейзера. Алгоритмы. Построение и анализ. Стр.761)
4.13. Алгоритм Кнута-Морриса-Пратта поиска подстроки в строке (книга Т.Кормена, Ч.Лейзера. Алгоритмы. Построение и анализ. Стр.771)
4.14. Алгоритм Бойера-Мура поиска подстроки в строке (книга Т.Кормена, Ч.Лейзера. Алгоритмы. Построение и анализ. Стр.777)
4.15. Слияние k упорядоченных массивов
4.16. Модификация алгоритма быстрой сортировки на основе разбиения с помощью медианы трех элементов (книга Т.Кормена, Ч.Лейзера. Алгоритмы. Построение и анализ. Стр.171)
4.17. Алгоритм сортировки подсчетом (книга Т.Кормена, Ч.Лейзера. Алгоритмы. Построение и анализ. Стр.175)
4.18. Алгоритм цифровой сортировки (книга Т.Кормена, Ч.Лейзера. Алгоритмы. Построение и анализ. Стр.177)
4.19. Алгоритм сортировки вычерпыванием (книга Т.Кормена, Ч.Лейзера. Алгоритмы. Построение и анализ. Стр.180)
4.20. Алгоритм поиска Randomized-Select (книга Т.Кормена, Ч.Лейзера. Алгоритмы. Построение и анализ. Стр.188)
4.21. Алгоритм поиска наибольшей общей подпоследовательности (книга Т.Кормена, Ч.Лейзера. Алгоритмы. Построение и анализ. Стр.318)
4.22. В ООН имеется полный перечень всех стран, который включает в себя: название, континент, столицу, площадь, численность населения, государственный строй. Упорядочить по названиям столиц сведения о государствах с площадью меньше заданной. Применить трехфазную внешнюю сортировку.
4.23. Алгоритм сортировки подсчетом (книга Т.Кормена, Ч.Лейзера. Алгоритмы. Построение и анализ. Стр.224, файл djvu)
4.24. Алгоритм поразрядной сортировки (книга Т.Кормена, Ч.Лейзера. Алгоритмы. Построение и анализ. Стр.226, файл djvu)
4.25. Алгоритм карманнной сортировки (книга Т.Кормена, Ч.Лейзера. Алгоритмы. Построение и анализ. Стр.230, файл djvu)
4.26. Алгоритм сортировки посредством вставок и слияния (книга Д.Кнут. Искусство Программирование. Том 3. Сортировка и Поиск. Стр.204, файл djvu)
4.27. Алгоритм сортировки бинарным слиянием Хана-Линя (книга Д.Кнут. Искусство Программирование. Том 3. Сортировка и Поиск. Стр.221, файл djvu)
4.28. Алгоритм многофазного слияния (книга Д.Кнут. Искусство Программирование. Том 3. Сортировка и Поиск. Стр.287, файл djvu)
4.29. Сортировка методом многофазного слияния с использованием «горизонтального» распределения (книга Д.Кнут. Искусство Программирование. Том 3. Сортировка и Поиск. Стр.287, файл djvu)
4.30. Сортировка методом каскадного слияния со специальным распределением (книга Д.Кнут. Искусство Программирование. Том 3. Сортировка и Поиск. Стр.312, файл djvu)
4.31. Написать функцию sort(x), упорядочивающую по неубыванию двоичные числа массива х методом поразрядной сортировки: все числа упорядочить по цифре в самом старшем разряде. Массив просматривается от начала (ищется число с 1 в заданном разряде) и конца (ищется число с 0 в заданном разряде) к середине и выбирается пара чисел для обмена. В результате массив разбивается на две части с 0 и 1 в старших разрядах, к каждой из которых применяется сортировка по цифре в разряде правее (при равенстве этих цифр сохранять упорядоченность по цифре в старшем разряде); и так далее до самого младшего разряда. В основе алгоритма поразрядной сортировки лежит абстрактная операция извлечения цифры в заданном разряде.
4.32. Дано n чисел. Упорядочить их по неубыванию методом фон Неймана: упорядочить пары соседних чисел (А1 и А2, А3 и А4 и т.д.); взять по две соседние упорядоченные пары и слить их в упорядоченные четверки; затем каждые две соседние четверки слить в упорядоченные восьмерки и т.д.
4.33. Написать программу поразрядной сортировки двузначных десятичных чисел с использованием очередей. Очереди представляют собой бункеры для хранения чисел (всего 10 бункеров). При сортировке выполняются два прохода по последовательности чисел для обработки сначала по позициям единиц, а затем десятков. В первом проходе числа из исходного массива распределяются в бункеры по позициям единиц. Затем выбираются из бункеров в порядке от 0 до 9 снова в массив. Во втором проходе числа из массива распределяются в бункеры по позициям десятков. После второго выбора из бункеров последовательность становится упорядоченной.
4.34. Выполнить обход в ширину неориентрованного графа, начиная с заданной вершины. Способ представления графа – матрица смежности.
4.35. Выполнить обход в ширину неориентрованного графа, начиная с заданной вершины. Способ представления графа – матрица инциденций.
4.36. Выполнить обход в ширину ориентрованного графа, начиная с заданной вершины. Способ представления графа – список смежности.
4.37. Выполнить обход в глубину ориентрованного графа, начиная с заданной вершины. Способ представления графа – матрица смежности.
4.38. Выполнить обход в глубину ориентрованного графа, начиная с заданной вершины. Способ представления графа – матрица инциденций.
4.39. Выполнить обход в глубину неориентрованного графа, начиная с заданной вершины. Способ представления графа – список смежности.
4.40. Написать библиотеку функций для работы с ориентированными графами. Графы представлять в виде матрицы смежности. Предусмотреть следующие операции для работы с графами: создание/удаление графа, ввод/вывод, добавление/удаление ребра, добавление/удаление вершины, объединение/разбиение графа.
4.41. Написать библиотеку функций для работы с неориентированными графами. Графы представлять в виде матрицы смежности. Предусмотреть следующие операции для работы с графами: создание/удаление графа, ввод/вывод, добавление/удаление ребра, добавление/удаление вершины, объединение/разбиение графа.
4.42. Написать библиотеку функций для работы с ориентированными графами. Графы представлять в виде матрицы инцидентности. Предусмотреть следующие операции для работы с графами: создание/удаление графа, ввод/вывод, добавление/удаление ребра, добавление/удаление вершины, объединение/разбиение графа.
4.43. Написать библиотеку функций для работы с неориентированными графами. Графы представлять в виде матрицы инцидентности. Предусмотреть следующие операции для работы с графами: создание/удаление графа, ввод/вывод, добавление/удаление ребра, добавление/удаление вершины, объединение/разбиение графа.
4.44. Написать библиотеку функций для работы с ориентированными графами. Графы представлять в виде динамического списка связности. Предусмотреть следующие операции для работы с графами: создание/удаление графа, ввод/вывод, добавление/удаление ребра, добавление/удаление вершины, объединение/разбиение графа.
4.45. Написать библиотеку функций для работы с неориентированными графами. Графы представлять в виде динамического списка связности. Предусмотреть следующие операции для работы с графами: создание/удаление графа, ввод/вывод, добавление/удаление ребра, добавление/удаление вершины, объединение/разбиение графа.