Правильно ли написана процедура добавления элемента в конец очереди? - 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
. - Конец процедуры.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д