Динамические структуры данных Линейный однонаправленный список
Описание : n type n data=integer; n l_ptr= ^node; n node = record n inf: data; n next: l_ptr; n end;
Шаг 0 El: =nil
Шаг 1
Шаг 2
Шаг 3
Шаг 4
new(p); p^. inf: =d; p^. next: =el; el: =p;
Создание пустого списка function create: l_ptr; begin create: =nil; end;
Процедура добавления элемента в начало списка procedure add(var el: l_ptr; d: data); var p: l_ptr; begin new(p); p^. inf: =d; p^. next: =el; el: =p; end;
Переход на следующий элемент function next(el: l_ptr): l_ptr; begin next: =el^. next; end;
Нахождение содержимого элемента списка function inf(el: l_ptr): data; begin inf: =el^. inf; end;
Проверка списка на наличие в нем элементов function eol(el: l_ptr): boolean; begin eol: =(el=nil); end;
Процедура печати всех элементов списка procedure print_list(el: l_ptr); var temp: l_ptr; begin temp: =el; while not(eol(temp)) do begin writeln(inf(temp)); temp: =next(temp); end;
Процедура удаления списка procedure destroy(var el: l_ptr); begin if not(eol(el)) then destroy(el^. next); if not(eol(el)) then dispose(el); end;
program list; uses U_list, CRT; var l, temp: l_ptr; n: integer; i: integer; begin Writeln(’Введите количество элементов списка'); readln(n); l: =create; for i: =1 to n do add(l, i); print_list(l); destroy(l); end.