
Контрольные вопросы и упражнения
1. Как создать пустой список?
2. Как создать новый элемент списка?
3. Как включить в начало списка новый элемент, на который ссылается указатель i?
4. Напишите фрагмент включения элемента *i в конец списка.
5. Как удалить из списка 1-й элемент?
6. Приведите пример исходных данных для программы 15.1 и нарисуйте список, который сформирует программа.
7. Где в программе 16.1 происходит формирование списка?
8. Почему функции Vkl() передается адрес указателя списка p, а функции PechSp() – значение указателя p?
9. В функции Vkl() параметр p какого типа?
10. Как в функции Vkl() происходит обращение к указателю списка?
11. Изменится ли указатель списка p в главной программе, если функцию печати списка изменить следующим образом:
void PechSp ( struct EL_SP *p )
{
printf ("\nРезультат:\n");
for ( ; p != NULL; p =p -> sled )
puts (p -> id);
}
Выполнение контрольных заданий
1. Получите у преподавателя индивидуальное задание.
2. Напишите функцию на языке С и подберите тесты для ее проверки на компьютере. Все входные данные должны передаваться функции как параметры.
3. Включите свою функцию в программу 16.1, добавив в основную программу ввод необходимых для функции данных, ее вызов и вывод результата. Если функция должна изменить список, то для проверки результата вызовите функцию печати списка. Отладьте программу на компьютере.
4. Оформите и сдайте отчет.
Контрольные задания
Дан список идентификаторов. Длина каждого идентификатора не более 8 символов. Идентификаторы в списке расположены в лексикографическом порядке. Составить функции (подпрограммы) для следующих операций:
1. Удалить из списка
а) первый элемент;
б) второй элемент;
в) первые два элемента;
г) k-й по порядку элемент;
д) все элементы, начиная с k-го по порядку;
е) k первых элементов;
ж) предпоследний элемент;
з) последний элемент;
и) два последних элемента;
к) заданный идентификатор (первый по порядку, если таких в списке несколько);
л) все идентификаторы, совпадающие с заданным;
м) все идентификаторы, начинающиеся с заданной буквы;
н) все идентификаторы, следующие в списке после заданного идентификатора;
о) все идентификаторы, следующих в списке до заданного идентификатора;
п) все элементы.
2. Заменить на заданный идентификатор значение
а) k-го по порядку элемента списка;
б) предпоследнего элемента списка;
в) последнего элемента списка.
3. Определить количество идентификаторов в списке,
а) начинающихся с заданной буквы;
б) следующих после заданного идентификатора;
в) следующих до заданного идентификатора.
4. Записать в массив A
а) все идентификаторы из списка;
б) все идентификаторы, начинающиеся с заданной буквы;
в) k первых идентификаторов списка (k > 1);
г) все идентификаторы, следующие в списке до заданного идентификатора;
д) идентификаторы с нечетными порядковыми номерами (1,3,5…).
Указание. В качестве драйвера (программы отладки) своих функций возьмите программу 16.1, добавив в нее описания своих функций, их вызовы и печать результатов.