Создать стек из случайных целых чисел. Развернуть стек, т.е. «дно» стека сделать вершиной, а вершину – «дном» - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Создать стек из случайных целых чисел. Развернуть стек, т.е. «дно» стека сделать вершиной, а вершину – «дном».

Решение задачи: «Создать стек из случайных целых чисел. Развернуть стек, т.е. «дно» стека сделать вершиной, а вершину – «дном»»

textual
Листинг программы
  1. type
  2.   PStack = ^TStack;
  3.   TStack =
  4.   record
  5.     data : integer;
  6.     next : PStack;
  7.   end;
  8.  
  9. procedure Push(var s : PStack; v : integer);
  10. var t : PStack;
  11. begin
  12.   new(t);
  13.   t^.data := v;
  14.   t^.next := s;
  15.   s := t;
  16. end;
  17.  
  18. function Pop(var s : PStack) : integer;
  19. var t : PStack;
  20. begin
  21.   if s <> nil then
  22.   begin
  23.     Pop := s^.data;
  24.     t := s;
  25.     s := s^.next;
  26.     dispose(t);
  27.   end;
  28. end;
  29.  
  30. procedure Print(s : PStack);
  31. var t : PStack;
  32. begin
  33.   t := s;
  34.   while t <> nil do
  35.   begin
  36.     write(t^.data:4);
  37.     t := t^.next;
  38.   end;
  39.   writeln;
  40. end;
  41.  
  42. var
  43.   s, t : PStack;
  44.   i : integer;
  45. begin
  46.   s := nil;
  47.   for i := 1 to 5 do Push(s, Random(100));
  48.   Print(s); // созданный стек
  49.  
  50.   t := nil;
  51.   while s <> nil do Push(t, Pop(s));
  52.   s := t;
  53.   Print(s); // "перевернутый" стек
  54.  
  55.   while s <> nil do Pop(s); // освобождаем память
  56. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы