Сколько элементов стека, начиная с вершины, находится до элемента с максимальным значением. - Free Pascal
Формулировка задачи:
Создать стек из случайных целых чисел и определить, сколько элементов стека, начиная с вершины, находится до элемента с максимальным значением.
Решение задачи: «Сколько элементов стека, начиная с вершины, находится до элемента с максимальным значением.»
textual
Листинг программы
program pr;
type
prec = ^trec;
trec = record
num: integer;
next: prec;
end;
var
stack: prec;
procedure push(const arg: integer);
var
p: prec;
begin
new(p);
p^.num := arg;
p^.next := stack;
stack := p;
end;
procedure printstack;
var
p: prec;
begin
p := stack;
while p <> nil do
begin
writeln(p^.num);
p := p^.next;
end;
end;
function poisk(stack: prec): integer;
var
max: integer;
buf: prec;
begin
buf := stack;
max := buf^.num;
while buf <> nil do
begin
if buf^.num > max then max := buf^.num;
buf := buf^.next;
end;
poisk := max;
end;
function co(stack: prec; const c: integer): integer;
var
p: prec;
cout: integer;
begin
cout := 0;
p := stack;
while (p <> nil) and (p^.num <> c) do
begin
cout := cout + 1;
p := p^.next;
end;
co := cout;
end;
var
S: string;
i, m, c, k: integer;
begin
for i := 1 to 10 do
begin
m := random(21);
push(m);
end;
printstack;
c := poisk(stack);
writeln('Наибольший элемент: ', c);
k := co(stack, c);
writeln('Количество элементов, которые находятся до наибольшего: ', k);
end.
Объяснение кода листинга программы
- Объявление типа данных
precдля ссылки на элемент стека. - Объявление переменной
stackтипаprecдля хранения вершины стека. - Определение процедуры
pushдля добавления элемента в стек. - Определение процедуры
printstackдля печати всех элементов стека. - Определение функции
poiskдля поиска элемента с максимальным значением в стеке. - Определение функции
coдля подсчета количества элементов в стеке до элемента с максимальным значением. - Объявление переменных
S,i,m,c,kдля хранения результатов работы программы. - Заполнение стека случайными числами от 1 до 20.
- Печать стека.
- Нахождение элемента с максимальным значением в стеке и его вывод.
- Подсчет количества элементов в стеке до элемента с максимальным значением и его вывод.