Правильно ли написана процедура добавления элемента в конец очереди? - Free Pascal
Формулировка задачи:
правильная процедура добавления элемента в конец очереди?
подскажите пожалуйста
procedure vnachalo(var p:list; x:integer ); {dobavlenie elem}
var q:list; l:list;
begin
p:=l;
if p<>nil then begin
while p^.next<>nil do
p:=p^.next; {v konec}
new(q);
q^.info:=x;
p^.next:=q;
p:=q; end
else
new(q);
q^.info:=x;
q^.next:=nil;
end;Решение задачи: «Правильно ли написана процедура добавления элемента в конец очереди?»
textual
Листинг программы
procedure vkonec(var p:list; x:integer); var q, l : list; begin l := p; while (l <> nil) and (l^.next <> nil) do l := l^.next; new(q); q^.info := x; q^.next := nil; if l = nil then p := q else l^.next := q; end;
Объяснение кода листинга программы
В данном коде реализована процедура добавления элемента в конец связанного списка.
- Создаются три переменные:
p(ссылка на голову списка),q(новая вершина списка) иl(текущая вершина списка). Значение переменнойpравно голове списка. - В цикле
whileпроисходит обход списка до тех пор, пока не будет найдена последняя вершина списка (вершина, у которойnextравноnil). - Создается новая вершина списка
q. В полеinfoзаписывается значение переменнойx, а в полеnextзаписываетсяnil. - Если список пуст, то
pприсваивается значениеq. Если не пуст, то в полеnextтекущей вершины списка записывается значениеq. - Конец процедуры.