Создать стек из случайных целых чисел. Развернуть стек, т.е. «дно» стека сделать вершиной, а вершину – «дном» - Free Pascal
Формулировка задачи:
Создать стек из случайных целых чисел. Развернуть стек, т.е. «дно» стека сделать вершиной, а вершину – «дном».
Решение задачи: «Создать стек из случайных целых чисел. Развернуть стек, т.е. «дно» стека сделать вершиной, а вершину – «дном»»
textual
Листинг программы
type PStack = ^TStack; TStack = record data : integer; next : PStack; end; procedure Push(var s : PStack; v : integer); var t : PStack; begin new(t); t^.data := v; t^.next := s; s := t; end; function Pop(var s : PStack) : integer; var t : PStack; begin if s <> nil then begin Pop := s^.data; t := s; s := s^.next; dispose(t); end; end; procedure Print(s : PStack); var t : PStack; begin t := s; while t <> nil do begin write(t^.data:4); t := t^.next; end; writeln; end; var s, t : PStack; i : integer; begin s := nil; for i := 1 to 5 do Push(s, Random(100)); Print(s); // созданный стек t := nil; while s <> nil do Push(t, Pop(s)); s := t; Print(s); // "перевернутый" стек while s <> nil do Pop(s); // освобождаем память end.
Объяснение кода листинга программы
- Объявлены типы данных PStack и TStack для представления стека.
- Создана процедура Push для добавления элемента в стек.
- Создана функция Pop для удаления элемента из стека.
- Создана процедура Print для вывода содержимого стека.
- Объявлены переменные s и t типа PStack для работы со стеком.
- Переменная s инициализируется как nil.
- В цикле создается пять элементов и добавляется в стек с помощью процедуры Push.
- Выводится содержимое стека с помощью процедуры Print.
- Переменная t инициализируется как nil.
- В цикле, пока стек s не пуст, элементы из него добавляются в стек t с помощью процедуры Push.
- Переменная s заменяется на t.
- Содержимое стека t выводится с помощью процедуры Print.
- Пока стек s не пуст, элементы из него удаляются с помощью функции Pop.
- Завершающая инициализация стека t.
- Цикл для освобождения памяти.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д