Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Bool List::ItemExists ( unsigned Index )⇐ ПредыдущаяСтр 16 из 16
// Проверка наличия элемента с индексом Index (значения индекса от 0 до Count - 1) { if (Index >= Count) // Если значение индекса некорректное { // Выводим сообщение об ошибке cout << "Элемент с индексом " << Index << " отсутствует!\ n"; return 0; // Возвращаем значение false } return 1; // Элемент с заданным индексом существует. Возвращаем значение true } // ---------------------------------------------- t_Item *List::Item (unsigned Index) // Функция возвращает адрес элемента с индексом Index (значения индекса // от 0 до Count - 1). Если такого элемента нет, выводится сообщение об // ошибке и функция возвращает нулевой адрес { if (! ItemExists (Index)) // Если элемент с заданным индексом // отсутствует, выводим сообщение об ошибке, return 0; // возвращаем нулевой адрес if (Index == Count – 1) // Если нужен последний элемент списка, return End; // возвращаем адрес последнего элемента // Начиная с начала списка перемещаемся по списку до элемента // с заданным индексом t_ Item * Curr = Items; // Делаем адрес очередного элемента равным // адресу первого элемента while (Index --) // Цикл продолжается Index раз Curr = Curr-> Adr; // Делаем адрес очередного элемента // равным адресу следующего элемента return Curr; // Возвращаем адрес элемента с заданным индексом } // ---------------------------------------------- t_Inf List::GetItem (unsigned Index) // Функция возвращает информационную часть элемента с индексом Index, // если такой элемент имеется. Если такого элемента нет, выводится // сообщение об ошибке, и функция возвращает значение // информационной части равное DefVal { t_ Item * Curr = Item (Index); // Получаем адрес элемента с заданным индексом if (! Curr) // Если адрес нулевой return DefVal; // Возвращаем значение по умолчанию return Curr-> Inf; // Возвращаем значение информационной части } // ---------------------------------------------- void List::PutItem (unsigned Index, t_Inf Val) // Функция устанавливает значение информационной части элемента // с индексом Index, если такой элемент имеется, в значение Val.
// Если такого элемента нет, выводится сообщение об ошибке, // а информационная часть элемента остается без изменения { t_ Item * Curr = Item (Index); // Получаем адрес элемента с заданным индексом if (! Curr) // Если адрес нулевой return; // Выходим из функции Curr-> Inf = Val; / / Информационной части найденного элемента // присваиваем значение Val } // ---------------------------------------------- void List::AddItem (t_Inf Val) // Функция добавляет новый элемент в конец списка и // делает значение информационной части этого элемента равной Val { t_ Item * NewItem = new t_ Item; // NewItem - адрес нового созданного // элемента списка NewItem-> Inf = Val; / / Присваиваем информационной части этого // элемента значение Val NewItem-> Adr = 0; // Поскольку элемент добавляется в конец списка, // в его адресную часть заносим 0 if (Count) // Если в списке уже были эементы (Count > 0), End-> Adr = NewItem; // адресной части последнего элемента // присаиваем адрес нового элемента else // Иначе (Count = 0 - список был пуст) Items = NewItem; // делаем адрес первого элемента списка // равным адресу нового элемента End = NewItem; // Теперь адрес последнего элемента списка // делаем равным адресу добавленного элемента ++ Count; // Увеличиваем количество элементов списка на 1 } // ---------------------------------------------- t_Item *List::ExtractItem (unsigned Index) // Функция выделяет элемент списка с индексом Index, исключая его из списка, // но не удаляет его из динамической памяти. Возвращает адрес
// выделенного элемента, если такой элемент есть. Если такого элемента нет – // выводит сообщение об ошибке и возвращает нулевой адрес { if (! ItemExists (Index)) // Если элемент с заданным индексом отсутствует, // выводим сообщение об ошибке, return 0; // возвращаем нулевой адрес t_ Item * DItem, // Переменная для адреса выделяемого элемента * Pred = 0; // Переменная для адреса элемента // предшествующего выделяемому if (Index == 0) // Если выделяется первый элемент списка, { DItem = Items; // адрес выделяемого элемента делаем равным адресу // первого элемента списка, Items = Items-> Adr; // изменяем адрес первого элемента равным адресу // следующего элемента } else // Иначе (выделяется не первый элемент списка) { Pred = Item (Index – 1); // находим адрес элемента, который расположен // перед удаляемым, DItem = Pred-> Adr; // делаем адрес выделяемого элемента равным // адресной части предыдущего, Pred-> Adr = DItem-> Adr; // и в адресную часть предыдущего элемента // записывем адрес элемента, следующего // за выделяемым (тем самым исключаем // выделяемый элемент из списка). } if (DItem == End) // Если выделяемый элемент является // последним элементом списка, End = Pred; // корректируем адрес последнего элемента, делая его // равным адресу предыдущего -- Count; // Уменьшаем количество элементов в списке на 1 return DItem; // Возвращаем адрес выделенного элемента } // ----------------------------------------------
|
||||||
Последнее изменение этой страницы: 2021-09-26; просмотров: 36; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.217.109.151 (0.01 с.) |