- •СТРУКТУРЫ ДАННЫХ И АЛГОРИТМЫ
- •Глава 1 Линейные списки
- •Понятие структуры данных
- •Тип указатель
- •Линейный список
- •Линейный однонаправленный (односвязный) список
- •Линейный двунаправленный (двусвязный) список
- •Практическое задание «Линейные списки»
- •Задачи для самостоятельной работы
- •Контрольные вопросы
- •Глава 2 Структуры данных стек и очередь
- •Понятие структуры данных стек и очередь
- •Структура данных стек
- •Структура данных очередь
- •Пример решения задачи с использованием стека
- •Практическое задание «Стеки и очереди»
- •Задачи для самостоятельной работы
- •Контрольные вопросы
- •Глава 3 Древовидные структуры данных
- •Понятие структуры данных дерево
- •Представление структуры бинарное дерево в памяти
- •Обход дерева
- •Основные операции над деревом
- •Ввод дерева
- •Практическое задание «Бинарные деревья»
- •Задачи для самостоятельной работы
- •Контрольные вопросы
- •Глава 4 Структура данных таблица
- •Понятие структуры данных таблица
- •Представление таблицы в памяти
- •Организация хеш-таблиц
- •Выбор функции расстановки
- •Разрешение коллизии
- •Операции над таблицами
- •Практическое задание «Управление таблицами»
- •Задачи для самостоятельной работы
- •Контрольные вопросы
- •Глава 5 Алгоритмы упорядочения данных
- •Понятие операции упорядочения
- •Алгоритмы упорядочения
- •Сортировка слиянием
- •Основные алгоритмы сортировки посредством сравнений
- •Улучшенные алгоритмы сортировки сравнением
- •Практическое задание «Алгоритмы сортировки»
- •Задачи для самостоятельной работы
- •Контрольные вопросы
- •Библиографический список
else
return 0;
}
3) операция исключение элемента из упорядоченной таблицы с однозначным ключом (линейный поиск):
int DeleteTable (table *G, int x)
{
int i = 0;
for ( ; i < G->n - 1 && G->el[i].m < x; i++);
if (G->el[i].m == x)
{
for ( ; i < G->n – 1; i++) G->el[i] = G->el[i + 1];
G->n--; return 1;
}
else
return 0;
}
ПРАКТИЧЕСКОЕ ЗАДАНИЕ «УПРАВЛЕНИЕ ТАБЛИЦАМИ»
Цели
Изучить основные способы организации и обработки таблиц, приобрести практические навыки их использования при решении задач.
Варианты заданий
1В файле PROG содержится текст программы на языке C. Файл разделен на строки произвольной длины (но не более 256). Используя определения и описания, построить:
1)таблицу имен. Элемент таблицы должен содержать имя программного объекта, его тип, размер памяти, требуемой объекту,
99
число компонент, тип компонент (последние два признака для сложных типов). Организовать таблицу как:
а) неупорядоченную; б) упорядоченную;
в) таблицу с вычисляемым входом (таблица с перемешиванием);
2) таблицу констант. Элемент таблицы содержит: значение константы, имя константы, тип константы, размер памяти. Организовать таблицу как:
а) неупорядоченную; б) упорядоченную;
в) таблицу с вычисляемым входом, считая, что тип констант целый и диапазон значений от -255 до 255.
2В файле WORK содержатся результаты работы цеха за день. Элемент файла включает: шифр изделия (8 - символьный код), наименование изделия, количество (штук). Построить таблицу, содержащую результаты работы за день, считая ключом шифр изделия. Элемент таблицы имеет ту же структуру, что и элемент файла. Содержащаяся в файле информация с равными ключами должны быть помещена в таблицу один раз с общим количеством штук изделия. Организовать таблицу как:
а) неупорядоченную; б) упорядоченную;
в) таблицу с вычисляемым входом (таблица с перемешиванием).
3В спортивных соревнованиях участвуют n команд. В файле SPORT содержатся прогнозы результатов соревнований. Каждый прогноз включает номер команды, занявшей первое место, номер команды, занявшей последнее место, номера команд, входящих в первую тройку сильнейших команд. Построить таблицу, содержащую про-
100
центы голосов, отданных командам – претендентам на первое место, командам - претендентам на последнее место и проценты голосов, отданных командам - претендентам на первую тройку. Организовать таблицу как:
а) неупорядоченную; б) упорядоченную;
в) таблицу с вычисляемым входом.
Задачи для самостоятельной работы
1 Элемент таблицы характеризуется двумя признаками: один – это последовательность не более чем из 15 символов и этот признак – ключ, другой признак – вещественное значение. Определить тип «таблица» и написать подпрограмму:
а) включения элемента в упорядоченную таблицу; б) включения элемента в неупорядоченную таблицу;
в) включения элемента в упорядоченную таблицу с неоднозначным ключом;
г) включения элемента в неупорядоченную таблицу с однозначным ключом;
д) удаления элемента из упорядоченной таблицы; е) удаления элемента из неупорядоченной таблицы;
ж) удаления элемента из неупорядоченной таблицы с неоднозначным ключом;
з) поиска элемента в упорядоченной таблице; и) поиска элемента в неупорядоченной таблице.
2Элемент таблицы характеризуется тремя признаками: один – вещественное значение, второй – целое положительное число и этот признак – ключ элемента, третий – это последовательность не бо-
101
лее чем из 10 символов. Определить тип «таблица» и написать подпрограмму:
а) включения элемента в упорядоченную таблицу; б) включения элемента в неупорядоченную таблицу; в) удаления элемента из упорядоченной таблицы; г) удаления элемента из неупорядоченной таблицы; д) поиска элемента в упорядоченной таблице; е) поиска элемента в неупорядоченной таблице.
3 В файле содержатся элементы упорядоченной по убыванию ключа таблицы следующего вида:
Шифр студента |
ФИО студента |
Год поступления в вуз |
(6 символов) |
(25 символов) |
(целое) |
|
|
|
Ключ элемента – шифр студента. Ключ таблицы однозначно определяет её элемент. Количество элементов не превышает 300. Используя бинарный поиск, включить в таблицу ещё один элемент.
4 В текстовом файле хранится упорядоченная по возрастанию значений ключа таблица. Элемент таблицы имеет следующую структуру:
Наименование |
Шифр |
Количество |
Цена |
материала |
материала |
материала |
(вещественное) |
|
|
|
|
(15 символов) |
(6 символов) |
(целое) |
|
|
|
|
|
Количество элементов не превышает 300. Найти элемент таблицы с заданным ключом, считая ключом таблицы шифр материала. Известно, что ключ однозначно определяет элемент таблицы. Поиск места элемента в таблице организовать используя:
а) последовательный поиск;
102
б) бинарный поиск.
5 В кроссе принимало участие n спортсменов, n 50. В таблице хранится информация о результатах забега в кроссе. Элемент таблицы имеет следующую структуру:
Номер спортсмена |
Время старта |
Время финиша |
(целое) |
(вещественное) |
(вещественное) |
|
|
|
Найти номера трех призеров забега и их результаты.
6 В текстовом файле содержится список лекарственных препаратов, поступивших в аптеку за прошедшие сутки. Элемент списка включает шифр препарата – 12 символьный код, наименование не более 25 символов, цена – вещественное значение, количество штук препарата. Добавить препараты из этого списка в упорядоченную таблицу «Наличие лекарственных препаратов в аптеке». Элемент таблицы имеет такую же структуру как элемент списка, ключом является шифр, размер таблицы не превышает 200. Поиск места элемента в таблице организовать используя:
а) последовательный поиск; б) бинарный поиск.
7 В деканате имеется список S студентов 1-го курса факультета. Элемент списка включает шифр студента – 7 символьный код, ФИО не более 25 символов, средние баллы по успеваемости в зимнюю и весеннюю сессии – вещественные значения. Список упорядочен по шифрам, размер списка не более 150. По результатам успеваемости за две сессии ряд студентов переводится на другой факультет. Удалить из списка S студентов, перечисленных в списке перевода P на другой факультет. Элемент списка P включает шифр и ФИО студента, список P также упорядочен по шифрам студентов. Поиск элемента в таблице организовать используя:
а) последовательный поиск; б) бинарный поиск.
103
8В таблице, состоящей из n элементов, n 250, содержится информация об игрушках для детей. Элемент таблицы включает наименование игрушки не более 25 символов, возраст ребенка, для которого предназначена игрушка – целое число, количество штук в наличие в магазине. Таблица упорядочена по возрастанию возраста ребенка. Найти игрушки, которые подойдут ребенку в возрасте от заданного минимального значения до заданного максимального. Поиск места элемента в таблице организовать используя:
а) последовательный поиск; б) бинарный поиск.
9 В текстовом файле содержится список телефонных разговоров. Элемент списка включает номер телефона – 10 символьный код, ФИО абонента не более 30 символов, количество минут разговора, стоимость минуты разговора. Добавить эту информацию в упорядоченную таблицу «Оплата телефонных разговоров» размером не более 500. Элемент таблицы включает номер телефона – 10 символьный код (и это ключ таблицы), ФИО абонента не более 30 символов, количество минут разговора, стоимость минуты разговора и сумму к оплате. Сумма к оплате вычисляется умножением количества минут на стоимость минуты. Поиск места элемента в таблице организовать используя:
а) последовательный поиск; б) бинарный поиск.
10В текстовом файле содержится список поступивших в течение месяца в магазин товаров. Элемент списка включает шифр товара – 15 символьный код (это ключ), наименование товара не более 25 символов, цена – вещественное значение, количество штук товара. Количество элементов не превышает 50. Построить хеш-таблицу, содержащую этот список. В списке могут содержаться элементы с равными ключами. В таблицу такой товар должен быть помещен один раз с общим количеством штук товара. Написать подпрограмму поиска места для включаемого в таблицу элемента.
104
