Создать стек со случайными целыми числами. Удалить минимальный элемент - Free Pascal
Формулировка задачи:
Создать стек со случайными целыми числами. Удалить минимальный элемент.
Решение задачи: «Создать стек со случайными целыми числами. Удалить минимальный элемент»
textual
Листинг программы
- type
- titem = integer;
- pstack = ^tstack;
- tstack =
- record
- data : titem;
- next : pstack;
- end;
- procedure push(var s : pstack; X : titem);
- var q : pstack;
- begin
- new(q);
- q^.next := s;
- q^.data := X;
- s := q;
- end;
- function pop(var s : pstack) : titem;
- var q : pstack;
- begin
- result := s^.data;
- q := s;
- s := s^.next;
- dispose(q);
- end;
- procedure print(s : pstack);
- begin
- while s <> nil do
- begin
- write(s^.data:4);
- s := s^.next;
- end;
- writeln;
- end;
- var
- s1 : pstack;
- s2 : pstack ;
- i, min_i : integer;
- it, min : titem;
- begin
- s1:=nil;
- s2:=nil;
- randomize;
- for i := 1 to 10 do
- push(s1, random(50));
- print(s1);
- min := 50;
- i := 0;
- while (s1<>nil) do
- begin
- it := pop(s1);
- inc(i);
- if it < min then
- begin
- min_i := i;
- min := it;
- end;
- push(s2, it);
- end;
- while (s2<>nil) do
- begin
- it := pop(s2);
- if i <> min_i then push(s1, it);
- dec(i);
- end;
- print(s1);
- end.
Объяснение кода листинга программы
В данном коде используется стек, созданный на основе динамического массива, который содержит случайные целые числа. В этом коде есть следующие процедуры и функции:
- push: Эта процедура добавляет новый элемент в стек. Она создает новый указатель на стек, присваивает его полю
next
нового элемента и присваивает значение поляdata
нового элемента. - pop: Эта функция удаляет верхний элемент из стека и возвращает его значение. Она получает указатель на верхний элемент стека, сохраняет его значение в переменной типа
titem
, удаляет текущий элемент и возвращает сохраненное значение. - print: Эта процедура выводит все элементы стека. Она проходит через каждый элемент стека, начиная с верхнего, и выводит значение каждого элемента.
- s1: Это переменная типа
pstack
, которая является стеком для хранения чисел. - s2: Это переменная типа
pstack
, которая используется для хранения чисел во время процесса поиска минимального числа. - i: Это переменная типа
integer
, которая используется для отслеживания индекса текущего элемента в стеке. - min_i: Это переменная типа
integer
, которая используется для хранения индекса минимального числа в стеке. - it: Это переменная типа
titem
, которая используется для временного хранения значения текущего элемента при его удалении из стека. - min: Это переменная типа
titem
, которая используется для хранения минимального числа. Вот список действий, выполняемых в коде: - Создается новый стек
s1
и инициализируется как пустой. - В цикле добавляются 10 случайных чисел в стек
s1
с помощью функцииpush
. - Выводится содержимое стека
s1
с помощью функцииprint
. - Инициализируется переменная
min
значением 50 и переменнаяi
значением 0. - В цикле, пока стек
s1
не пуст, происходит следующее:- Значение текущего элемента (определенного как
it
) удаляется из стекаs1
с помощью функцииpop
. - Переменная
i
увеличивается на 1. - Если значение
it
меньше значенияmin
, то обновляются значенияmin_i
иmin
для хранения индекса и значения минимального числа соответственно. - Значение
it
добавляется в стекs2
с помощью функцииpush
.
- Значение текущего элемента (определенного как
- В цикле, пока стек
s2
не пуст, происходит следующее:- Значение текущего элемента (определенного как
it
) удаляется из стекаs2
с помощью функцииpop
. - Если значение
i
не равно значениюmin_i
, то значениеit
добавляется в стекs1
с помощью функцииpush
. - Переменная
i
уменьшается на 1.
- Значение текущего элемента (определенного как
- Выводится содержимое стека
s1
с помощью функцииprint
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д