
- •Министерство образования и науки Российской Федерации
- •Инструкция по мерам безопасности и правилам поведения в компьютерном классе Общее положения:
- •Методические указания по выполнению лабораторных работ
- •Лабораторная работа № 1 Основы работы с персональным компьютером Цель
- •Задание для самостоятельной подготовки
- •Основы теории
- •Задание
- •Порядок выполнения работы
- •Требования к отчету
- •Задание к работе
- •Порядок выполнения работы
- •Требования к отчету
- •Задание к работе
- •Порядок выполнения работы
- •Требования к отчету
- •100.101
- •111.000
- •Задание
- •Порядок выполнения работы
- •Контрольные вопросы
- •Задание
- •Порядок выполнения работы
- •Требования к отчету
- •Контрольные вопросы
- •Лабораторная работа № 6.
- •Задание
- •Порядок выполнения работы
- •Задание
- •Порядок выполнения работы
- •Требования к отчету
- •Задания
- •Порядок выполнения работы
- •Требования к отчету
- •Контрольные вопросы
- •Лабораторная работа № 9.
- •Задание
- •Задание
- •Порядоквыполненияработы
- •Требования к отчету
- •Задание
- •Порядок выполнения работы
- •Отчет о работе
- •Задание
- •Задание
- •Порядок выполнения работы (на примере)
- •Требования к отчету
- •Задание к работе
- •Порядок выполнения работы
- •Отчет о работе
- •Задание
- •Примеры выполнения работы
- •Требования к отчету
- •Контрольные вопросы
- •Лабораторная работа № 15
- •Задание
- •Порядок выполнения работы
- •Требования к отчету
- •Контрольные вопросы
- •Лабораторная работа № 16
- •Задание
- •Порядок выполнения работы
- •Задания
- •Требования к отчету
- •Задание
- •Порядок выполнения работы
- •Отчет о работе
- •Задание
- •Порядок выполнения работы
- •Отчет о работе
- •Задание
- •Порядок выполнения работы
- •Отчет о работе
- •Реализация последовательных списков с использованием массивов
- •Задания
- •Требования к отчету
- •Контрольные вопросы
- •Лабораторная работа № 22.
- •Задание
- •Порядок выполнения работы
- •Контрольные вопросы
- •Задание
- •Порядок выполнения работы
- •Контрольные вопросы
- •Требования к отчету
- •1.5 Алгоритм добавления звена к очереди.
- •Задание
- •Порядок выполнения работы
- •Контрольные вопросы
- •Требования к отчету
- •Задание
- •Порядок выполнения работы
- •Контрольные вопросы
- •Требования к отчету
- •Использование fread() и fwrite()
- •Задание
- •Порядок выполнения работы
- •Контрольные вопросы
- •Задание
- •Порядок выполнения работы
- •Требования к отчету
- •Контрольные вопросы
- •Лабораторная работа № 28.
- •Задание
- •Требования к отчету
- •Порядок выполнения работы
- •Контрольные вопросы
- •Задание
- •Порядок выполнения работы
- •Требования к отчету
- •Задания к работе
- •Порядок выполнения работы
- •Задание
- •Пример выполнения задания
- •Контрольные вопросы
- •Требования к отчету
- •Задание
- •Порядок выполнения работы
- •Требования к отчету
- •Контрольные вопросы
- •Лабораторная работа №33.
- •Задание
- •Порядок выполнения работы
- •Контрольные вопросы
- •Шифрование при помощи задачи о ранце
- •Популярные системы шифрования
- •Задание
- •Порядок выполнения работы
- •Контрольные вопросы
- •Требования к отчету
- •Литература
- •Internet-ресурсы
1.5 Алгоритм добавления звена к очереди.
Звено добавляется в конец очереди.
Рисунок 9 - Исходная очередь
Построение добавляемого звена:
r = new (node); // создание узла очереди
(*r).elem = Элем; // указатель на первый элемент
(*r).sled = NULL; // указатель на
//следующий (пустой) узел
Рисунок 10 - Заполнение добавляемого звена
2. Присоединяем звено к очереди:
(*ko).sled = r; // присвоение указателя конца
//новому звену очереди
Рисунок 11 - Результат присоединения звена
"Настраиваем" указатель koна конец очереди:
ko = r; // конец очереди есть добавляемое звено
Изобразим результат добавления звена:
Рисунок 12 –«Настройка» указателя
В результате добавляемое звено стало последним звеном очереди.
Оформим алгоритм в виде функции на языке C++:
void DOBAVLENIE (node *no, node *ko, int el)
// Добавление звена с информационным полем el
//* к очереди, определенной указателями *no и *ko.
{ // открытие тела функции DOBAVLENIE
node *r; // указатель начала очереди
r = new (node); // создание узла
(*r).elem = el; // указатель на введенный элемент
(*r).sled = NULL; // указатель на пустой узел
if (*no!=NULL)//если очередь не пуста
{ // открытие if
(*ko).sled = r; // присвоение указателя очереди началу
//нового звена
*ko = r; // указатель хвоста очереди это созданное
//звено
} // закрытие if
Else // иначе
{ // открытие else
*no = r; //указатель головы на новом звене
*ko = r; // указатель хвоста на новом звене
} //закрытие else
} // закрытие тела функции DOBAVLENIE
Алгоритм удаления звена из очереди.
Пусть очередь не пуста (no!=NULL). Изобразим ее схематически:
Рисунок 13 - Очередь
Приступим к удалению звена. Напомним, что звено удаляется из очереди из ее начала.
Сохраним удаляемый элемент:
klad = (*no).elem; //первый элемент очереди
// сохранен в переменной klad
Рисунок 14 - Сохранение удаляемого элемента
Сохраним указатель на удаляемый элемент и "перенастроим" указатель на начало очереди:
q = no; // сохранение указателя на удаляемый элемент
no = (*no).sled; // присваивание указателя начала
// очереди следующему элементу
Рисунок 15 –«Перенастройка» указателя на начало очереди
Теперь необходимо включить в список свободной памяти удаленное из очереди звено с помощью вызова функции:
delete q; //удаление звена очереди
Рисунок 16 - Возврат памяти
Запишем приведенную схему в виде функции на языке C++:
void YDALENIE (node *no, node *ko, int klad)
// Удаление звена из очереди, определенной указателями //*no и *ko. Значение информационного поля //удаленного звена
// сохраняется в параметре klad.
{// открытие тела функции YDALENIE
node *q; // указатель на удаляемое звено
if (*no==NULL)// если очередь пуста
cout<< "Удалить нельзя, так как очередь пуста!\n";
// вывод текста на дисплей
else // иначе
{ // открытие else
*klad = (*no).elem;//сохранение первого элемента в klad
q = *no; // сохранение указателя на удаляемый элемент
//в q
*no = (*no).sled; // присваивание указателя начала
// очереди следующему элементу
deleteq; // удаление первого звена
} // закрытие else
}// закрытие тела функции YDALENIE