Создать стек со случайными целыми числами. Удалить минимальный элемент - 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.

Объяснение кода листинга программы

В данном коде используется стек, созданный на основе динамического массива, который содержит случайные целые числа. В этом коде есть следующие процедуры и функции:

  1. push: Эта процедура добавляет новый элемент в стек. Она создает новый указатель на стек, присваивает его полю next нового элемента и присваивает значение поля data нового элемента.
  2. pop: Эта функция удаляет верхний элемент из стека и возвращает его значение. Она получает указатель на верхний элемент стека, сохраняет его значение в переменной типа titem, удаляет текущий элемент и возвращает сохраненное значение.
  3. print: Эта процедура выводит все элементы стека. Она проходит через каждый элемент стека, начиная с верхнего, и выводит значение каждого элемента.
  4. s1: Это переменная типа pstack, которая является стеком для хранения чисел.
  5. s2: Это переменная типа pstack, которая используется для хранения чисел во время процесса поиска минимального числа.
  6. i: Это переменная типа integer, которая используется для отслеживания индекса текущего элемента в стеке.
  7. min_i: Это переменная типа integer, которая используется для хранения индекса минимального числа в стеке.
  8. it: Это переменная типа titem, которая используется для временного хранения значения текущего элемента при его удалении из стека.
  9. min: Это переменная типа titem, которая используется для хранения минимального числа. Вот список действий, выполняемых в коде:
  10. Создается новый стек s1 и инициализируется как пустой.
  11. В цикле добавляются 10 случайных чисел в стек s1 с помощью функции push.
  12. Выводится содержимое стека s1 с помощью функции print.
  13. Инициализируется переменная min значением 50 и переменная i значением 0.
  14. В цикле, пока стек s1 не пуст, происходит следующее:
    • Значение текущего элемента (определенного как it) удаляется из стека s1 с помощью функции pop.
    • Переменная i увеличивается на 1.
    • Если значение it меньше значения min, то обновляются значения min_i и min для хранения индекса и значения минимального числа соответственно.
    • Значение it добавляется в стек s2 с помощью функции push.
  15. В цикле, пока стек s2 не пуст, происходит следующее:
    • Значение текущего элемента (определенного как it) удаляется из стека s2 с помощью функции pop.
    • Если значение i не равно значению min_i, то значение it добавляется в стек s1 с помощью функции push.
    • Переменная i уменьшается на 1.
  16. Выводится содержимое стека s1 с помощью функции print.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы