Создать стек со случайными целыми числами. Удалить все элементы, равные первому - Pascal
Формулировка задачи:
Создать стек со случайными целыми числами. Удалить все элементы, равные первому.
Решение задачи: «Создать стек со случайными целыми числами. Удалить все элементы, равные первому»
textual
Листинг программы
program pr; 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; it,max :titem; i,max_i:integer; p,pp:pstack; begin s1:=nil; s2:=nil; randomize; for i := 1 to 10 do push(s1, random(50)); print(s1); max:=s1^.data; while(s1<>nil) do begin it := pop(s1); inc(i); if it <> max then push(s2, it); end; while (s2<>nil) do begin it := pop(s2); push(s1,it); dec(i); end; print(s1); end.
Объяснение кода листинга программы
- Объявляются типы данных:
titem
- целочисленный тип данных иpstack
- указатель на стек. - Объявляется структура
tstack
с полямиdata
- данные типаtitem
иnext
- указатель на следующий элемент стека. - Описывается процедура
push
, которая добавляет элемент в стек: создаётся новый элементq
, данные и указатель присваиваются, и этот элемент становится вершиной стекаs
. - Описывается функция
pop
, которая удаляет элемент из стека, возвращая его значение: результатом становится значение верхнего элемента стека, верхний элемент удаляется, освобождается память. - Описывается процедура
print
для вывода стека на экран. - Объявляются переменные:
s1
иs2
- указатели на стек,it
иmax
- переменные типаtitem
,i
иmax_i
- переменные целочисленного типа,p
иpp
- указатели на стек. - Создается пустой стек
s1
иs2
. - Генерируются случайные числа и добавляются в стек
s1
. - Находится максимальный элемент в стеке
s1
. - Удаляются все элементы из
s1
, которые не равны максимальному, и добавляются вs2
. - Элементы из
s2
добавляются обратно вs1
. - Выводится измененный стек
s1
на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д