Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Bool List::ItemExists ( unsigned Index )Содержание книги
Поиск на нашем сайте // Проверка наличия элемента с индексом 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; просмотров: 79; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.214 (0.009 с.) |