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