Работа со списком.ppt
- Количество слайдов: 22
Работа с очередью
Пример программы Type TP = ^Telem; Telem = record inf: integer; Link: TP; end; var Start. P, End. P: TP; {указатели на первый и последний элементы} k, n, i: integer;
{----процедура добавления элемента в очередь--------} procedure Add. El(val: integer); var p: TP; {указатель на очередной элемент} begin 1) new(p); {выделяем память под текущий элемент} 2) p^. inf: =val; {присваиваем значение информационному полю} 3) p^. Link: =nil; {"обнуляем" указательное поле} 4) if End. P = nil {если создается первый элемент} then Start. P: =p {то его адрес в указатель на начало очереди} else {иначе, т. е. создается очередной элемент} End. P^. Link : =p; {то его адрес в указательное поле предыдущего элемента} 5) End. P: =p; {в указатель на конец очереди – адрес добавленного элемента} end;
{-------функция удаления первого элемента очереди----} {------(адрес которого в указателе на начало)------} function Get. Del. El: integer; var p: TP; {вспомогательный указатель на текущий элемент} begin 6) Get. Del. El: =Start. P^. Inf; {присваиваем функции результат - значение информационного поля первого элемента } 7) p: =Start. P; {адрес этого элемента - в p} 8) Start. P: = p^. Link; {первым станет следующий, поэтому его адрес в Start. P} 9) if Start. P = nil {если следующий - последний } then End. P: =nil; {сбросить указатель на конец} 10) dispose(p); {удалить элемент} end;
{------- ГЛАВНАЯ ПРОГРАММА -------} begin write('Введите кол-во элементов очереди'); readln(k); {-------формирование очереди из k элементов-------} Start. P: =nil; End. P: =nil; {*} for i: =1 to k do begin write('введите ', i, ' число '); readln(n); Add. El(n); {**} end; {-----распечатка и удаление очереди из памяти-----} while Start. P <> nil do writeln(Get. Del. El); {***} end.
Процесс выполнения программы Начинается работа с ввода количества элементов списка k. Пусть k=3. Затем выполняется строка {*}. Состояние памяти:
Состояние памяти после выполнения строки: 1) new(p);
Состояние памяти после выполнения строк: 2) p^. inf: =val; 3) p^. Link: =nil;
Состояние памяти после выполнения строки: 4) if End. P = nil then Start. P: =p else End. P^. Link : =p;
Состояние памяти после выполнения строки: 5) End. P: =p;
Состояние памяти после выполнения строки: 1) new(p);
Состояние памяти после выполнения строк: 2) p^. inf: =val; 3) p^. Link: =nil;
Состояние памяти после выполнения строки 4) if End. P = nil then Start. P: =p else End. P^. Link : =p;
Состояние памяти после выполнения строки: 5) End. P: =p;
Состояние памяти после выполнения строки 1:
Состояние памяти после выполнения строк 2, 3:
Состояние памяти после выполнения строки 4:
Состояние памяти после выполнения строки 7:
Состояние памяти после выполнения строки 8:
Состояние памяти после выполнения строки 10:
Состояние памяти перед выходом из функции:
Состояние памяти перед выходом из функции и при завершении программы:
Работа со списком.ppt