Описать процедуру, которая подсчитывает количество элементов очереди, у которых равные "соседи" - Pascal
Формулировка задачи:
Описать процедуру, которая подсчитывает количество элементов очереди, у которых равные "соседи".
Решение задачи: «Описать процедуру, которая подсчитывает количество элементов очереди, у которых равные "соседи"»
textual
Листинг программы
procedure neighborhood(queue : tqueue; var count : Integer); var cur : tqueue; begin count := 0; cur := queue; while cur <> nil do begin if (cur^.pred = nil) and (cur^.next = nil) then {а соседей то и нету!} else if (cur^.pred = nil) and (cur^.next <> nil) and (cur^.data = cur^.next^.data) then {сосед только справа} inc(count) else if (cur^.pred <> nil) and (cur^.next = nil) and (cur^.pred^.data = cur^.data) then {сосед только слева} inc(count) else if (cur^.pred^.data = cur^.data) and (cur^.data = cur^.next^.data) then {соседи с обеих сторон} inc(count); cur := cur^.next; end; end;
Объяснение кода листинга программы
В данном коде описывается процедура подсчёта количества элементов в очереди, у которых равные соседи
.
- Создаются две переменные: count (счётчик) и cur (текущий элемент). Изначально значение счётчика равно 0, а cur указывает на первый элемент в очереди.
- В цикле while происходит обход всех элементов в очереди.
- Если текущий элемент является первым в очереди (pred = nil), и у него нет соседа (next = nil), то значит, что у этого элемента нет соседей.
- Если текущий элемент является первым в очереди (pred = nil), и у него есть сосед (next <> nil), и данные в этом элементе и его соседе равны, то значит, что у этого элемента есть один сосед.
- Если текущий элемент не является первым в очереди (pred <> nil), и у него нет соседа (next = nil), и данные в этом элементе и его предыдущем элементе равны, то значит, что у этого элемента есть один сосед.
- Если текущий элемент не является первым в очереди (pred <> nil), и у него есть сосед (next = nil), и данные в этом элементе и его соседе равны, то значит, что у этого элемента есть два соседа.
- Значение счётчика увеличивается на единицу, если у текущего элемента есть равные соседи.
- Текущий элемент меняется на следующий в очереди (cur := cur^.next), и цикл while продолжается.
- По завершению цикла, в переменной count будет храниться количество элементов в очереди, у которых равные
соседи
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д