Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Then begin






Writeln('Список пуст'); Halt; end

else begin // список не пуст – удаление:

DisItem: =List; // устанавливаем DistItem на начало списка,

List: =List^.Next; // устанавливаем List на второй элемент списка,

DeleteFirst: =DisItem^.Value; // возвращаем значение удаляемого элемента

Dispose(DisItem); // и удаляем первый элемент списка

end;

end;

Исключение последнего элемента списка List:

function DeleteLast(var List: pItem): tValue;

// Исключение последнего элемента списка List и возвращение его значения

var DisItem, // указатель на удаляемый (последний) элемент списка

PredItem: pItem; // указатель на элемент, предшествующий удаляемому

Begin

if List= nil // если список пуст, то удаление невозможно

Then begin

Writeln('Список пуст'); Halt;

End

else begin // список не пуст – удаление:

// Поиск последнего (удаляемого) и предпоследнего элементов списка

DisItem: =List; PredItem: = nil;

while DisItem^.Next< > nil do begin // пока не достигнут конец списка:

PredItem: =DisItem; // сдвиг PredItem на следующий за ним элемент

DisItem: =DisItem^.Next; // и сдвиг DisItem на следующий за ним элемент

end;

if PredItem= nil // если в списке один элемент,

then List: = nil // то после его удаления список станет пустым

// иначе предпоследний элемент становится последним

else PredItem^.Next: = nil;

DeleteLast: =DisItem^.Value; // возвращаем значение удаляемого элемента

Dispose(DisItem); // удаляем последний элемент списка

end;

end;

Вывод в файл f элементов списка List:

procedure WriteList(var f: Text; List: pItem);

// Вывод в файл f элементов списка List

var Item: pItem; // указатель на элемент списка

Begin

Item: =List; // устанавливаем Item на начало списка

while Item< > nil do begin // пока не достигнут конец списка:

Write(f, Item^.Value: 8: 2); // выводим значение элемента

Item: =Item^.Next; // и сдвигаем указатель Item на следующий элемент

end;

Writeln(f);

end;

Удаление всех элементов списка List:

procedure Clear(var List: pItem);

// Удаление элементов списка

var Item: pItem; // указатель на удаляемый элемент списка

Begin

while List< > nil do begin // пока список не пуст:

Item: =List; // устанавливаем Item на начало списка,

List: =List^.Next; // передвигаем начало списка на следующий элемен т

Dispose(Item); // и удаляем первый элемент

end; // while

end;

Вычисление размера списка List:

function Size(List: pItem): Word;

// Возвращение количества элементов списка

var Item: pItem; // указатель на элемент списка

Begin

Item: =List; // устанавливаем Item на начало списка

Result: =0; // обнуляем счетчик числа элементов

while Item< > nil do begin // пока не достигнут конец списка:

Item: =Item^.Next; Inc(Result); // сдвигаем Item и увеличиваем счетчик

end; // while

end;

Контрольные вопросы

1. Какие переменные программы называются статическими, где они размещаются и на каком этапе под них выделяется память?

2. Какие переменные называются динамическими, где они размещаются и на каком этапе под них выделяется память?

3. Что представляет собой значение указателя?

4. Адреса каких объектов могут хранить типизированные указатели и как они описываются?

5. Адреса каких объектов могут хранить нетипизированные указатели и как они описываются?

6. Каковы характеристики операции получения адреса?

7. Какие функции используются для работы с адресами?

8. Какие процедуры используются для работы с указателями?

9. Каким образом можно присвоить значение переменной-указателю?

10. Что такое ссылка на переменную?

11. Какие структуры данных называют динамическими?

12. Что такое список и как он реализуется с помощью динамических переменных? Как можно описать список в программе?

13. Какие операции определены для работы со списком?

Лабораторная работа 1.
Организация списков
с помощью динамических переменных






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.