Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Занятие 6. Удаление элемента из списка.Содержание книги
Поиск на нашем сайте
В результате решения задач предыдущих занятий, Вы научились создавать различными способами список, анализировать его информационную часть, формировать на базе данного списка другой список и т. д. Поэтому для решения поставленной перед нами задачи удаления некоторого элемента из списка, нам нужно найти по какому-либо признаку этот элемент, что, надеюсь не составит для Вас труда. Уточним поставленную перед нами задачу: удалить из списка элемент с заданной информационной частью. Обозначим Head – исходный список, Digit – значение информационной части удаляемого элемента. При исследовании списка на наличие в нем заданного элемента может встретиться три различных случая. Рассмотрим их.
Удаление элемента из начала списка
Изобразим удаление графически:
Напишем фрагмент программы:
x:= Head; {Запомним адрес первого элемента списка} Head:= Head^.Next; {Теперь Head указывает на второй элемент списка} Dispose(x); {Освободим память, занятую переменной x^}
Удаление элемента из середины списка
Для этого нужно знать адреса удаляемого элемента и элемента, находящегося в списке перед ним.
Изобразим удаление графически:
x:= Head; {Переменная х для хранения адреса удаляемого элемента} {Найдем адреса нужных элементов списка} while (x<>Nil) and (x^.Data<>Digit) do Begin dx:= x; x:= x^.Next End; dx^.Next:= x^.Next; Dispose(x);
Удаление элемента из конца списка
Удаление элемента из конца списка производится, когда указатель dx показывает на предпоследний элемент списка, а х – на последний.
Изобразим удаление графически:
{Найдем предпоследний элемент} x:= Head; dx:=Head; while x^.Next<>Nil do Begin dx:= x; x:= x^.Next; End; {Удаляем элемент x^ из списка и освобождаем занимаемую им память} dx^.Next:= Nil; Dispose(x);
Теперь опишем процедуру удаления элементов из списка в общем случае:
Procedure Del(Gigit: integer; Var u: Ukazatel); Var x, dx: UKAZATEL; Begin x:= Head; while x<>Nil do if x^.Data=Digit then Begin if x=y then Begin Head:= Head^.Next; Dispose(x); x:= Head; End; else Begin dx^.Next:= x^.Next; Dispose(x); x:= dx^.Next; End; End; else Begin dx:= x; x:= x^.Next; End; End;
Задание. Напишите полный текст программы, решающей рассматриваемую задачу. Протестируйте программу, дополните комментарием покажите учителю для оценки.
Выберите с учителем задачи для самостоятельного решения.
1. Написать программу, содержащую процедуру, которая удаляет из списка М второй элемент, если такой есть.
2. Написать программу, содержащую процедуру, которая удаляет из списка М N-ый элемент, если такой есть. N задает пользователь.
3. Написать программу, содержащую процедуру удаления из заданного списка все вхождения элемента с заданным значением информационной части.
4. Написать программу, содержащую процедуру, которая удаляет из списка М за каждым вхождением элемента Е один элемент, если такой есть и он отличен от Е.
5. Написать программу, содержащую процедуру, которая удаляет из списка М первый отрицательный элемент, если такой есть.
6. Написать программу, содержащую процедуру, которая удаляет из списка М все отрицательные элементы.
7. Написать программу, содержащую процедуру, которая формирует список М, включив в него по одному разу элементы, которые входят хотя бы в один из списков М1 и М2.
8. Написать программу, содержащую процедуру, которая формирует список М, включив в него по одному разу элементы, которые входят одновременно в оба списка М1 и М2.
9. Написать программу, содержащую процедуру, которая формирует список М, включив в него по одному разу элементы, которые входят в список М1, но не входят в список М2.
10. Познакомившись с текстами предыдущих задач, придумайте свою задачу и решите ее.
Занятие 7. Зачет.
Приготовьте для проверки файлы с решенными задачами и листинги.
Проверьте свои знания, ответив на вопросы:
1. Дайте определение динамической структуре список.
2. Сколько элементов может содержать список? Как заканчивается список?
3. Сколько полей может содержать элемент списка? От чего зависит количество полей? Приведите примеры.
4. Какого типа могут быть поля элементов списка? Приведите примеры.
5. Обязательно ли применять процедуру освобождения памяти, занятой элементом, когда мы избавляемся от этого элемента в списке? Каким образом это влияет на работу программы?
6. Можно ли ссылку одного элемента направить сразу на два или больше других элемента? Как необходимо поменять тип указателя, чтобы решить эту проблему?
7. Может ли элемент списка быть такого типа, чтобы содержать несколько полей типа указателя? Если – да, то приведите пример для чего это может быть нужно.
8. Можно ли последовательно "связать" два списка разного типа и почему?
9. Можно ли одновременно работать с несколькими списками сразу?
10. Как Вы считаете, на что нужно обращать особое внимание при работе со списками?
|
||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 242; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.59.61.147 (0.008 с.) |