Удаление элемента из начала списка.
List := Head; { запомним адрес первого элемента списка }
Head := Head^.List; { теперь Head указывает на второй элемент списка }
Dispose(List); { освободим память, занятую переменной List^ }
Удаление элемента из середины списка.
Для этого нужно знать адреса удаляемого элемента и элемента, находящегося в списке перед ним.
List := Head;
While (List<>nil) and (List^.Data<>Digit) do
begin
x := List;
List := List^.Next;
end;
x^.Next := List^.Next;
Dispose(List);
Удаление из конца списка.
Оно производится, когда указатель х показывает на предпоследний элемент списка, а List – на последний.
List := Head; x := Head;
While List^.Next<>nil do
begin
x := List;
List := List^.Next;
end;
x^.Next := nil;
Dispose(List);
Контрольные вопросы
1. Что такое указатели? Какие значения они могут принимать? Какие операции возможны над указателями?
2. Что представляют собой динамические структуры данных? Для чего они используются? Чем отличаются от данных статического типа?
3. Какие стандартные процедуры существуют в языке Pascal для работы с указателями?
4. Зачем различать типы указателей?
5. Какие операции требуется выполнить для вставки и удаления элемента списка?
6. Сколько элементов может содержать список?
7. Можно ли для построения списка обойтись одной переменной?
Варианты заданий
1. Сформировать список строк и а) сохранить его в текстовом файле; б) сохранить его в обратном порядке в текстовом файле. Использовать рекурсию.
2. Сформировать список строк из текстового файла.
3. Написать функцию, которая вычисляет среднее арифметическое элементов непустого списка.
4. Написать процедуру присоединения списка L2 к списку L1.
5. Написать функцию, которая создает список L2, являющийся копией списка L1, начинающегося с данного узла.
6. Написать функцию, которая подсчитывает количество вхождений ключа в списке.
7. Написать функцию, которая удаляет из списка все вхождения ключа.
8. Многочлен задан своими коэффициентами, которые хранятся в форме списка. Написать функции:
– Equal(p, q), проверяющую на равенство многочлены p и q;
– Summa(p, q, r), которая строит многочлен r = p + q.
9. Вычислить значение многочлена в целочисленной точке x. Коэффициенты вводятся с клавиатуры и динамически размещаются в памяти.
10. Сформировать список целых чисел и упорядочить их по неубыванию.
11. Сформировать список целых чисел и удалить из него все четные.
12. Сформировать список вещественных чисел и вычислить сумму.
13. Написать рекурсивную и нерекурсивную процедуры проверки наличия в списке заданного числа.
14. Написать функцию, которая проверяет, упорядочены ли элементы списка по алфавиту.
15. Написать функцию, подсчитывающую количество слов в списке, которые начинаются с той же буквы, что и следующее слово.
16. Определить симметричность произвольного текста любой длины. Текст должен оканчиваться точкой. Задачу решить с помощью двух списков.
17. Вычислить значение выражения. Значения вводятся с клавиатуры и динамически размещаются в памяти.
18. Написать функцию, которая использует исходный список L и создает два новых списка L1 и L2. L1 содержит нечетные узлы, а L2 – четные.
19. Написать функцию, которая использует исходный список L и создает два новых списка L1 и L2. L1 содержит нечетные числа, а L2 – четные.
20. Сформировать два списка, отсортировать их объединить в один, не нарушая порядка.
Назад
На главную
Нет комментариев.
Оставить комментарий:
|