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