Создать стек из случайных целых чисел. Развернуть стек, т.е. «дно» стека сделать вершиной, а вершину – «дном» - 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.

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

  1. Объявлены типы данных PStack и TStack для представления стека.
  2. Создана процедура Push для добавления элемента в стек.
  3. Создана функция Pop для удаления элемента из стека.
  4. Создана процедура Print для вывода содержимого стека.
  5. Объявлены переменные s и t типа PStack для работы со стеком.
  6. Переменная s инициализируется как nil.
  7. В цикле создается пять элементов и добавляется в стек с помощью процедуры Push.
  8. Выводится содержимое стека с помощью процедуры Print.
  9. Переменная t инициализируется как nil.
  10. В цикле, пока стек s не пуст, элементы из него добавляются в стек t с помощью процедуры Push.
  11. Переменная s заменяется на t.
  12. Содержимое стека t выводится с помощью процедуры Print.
  13. Пока стек s не пуст, элементы из него удаляются с помощью функции Pop.
  14. Завершающая инициализация стека t.
  15. Цикл для освобождения памяти.

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

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