Неотрицательные числа нужно выписать в порядке, обратном тому, в котором они вводились - Free Pascal
Формулировка задачи:
Помогите, пожалуйста решить в Free Pascal. Спасибо.
Загрузите последовательность неотрицательных целых чисел, оканчивающихся на отрицательное число. Загруженные неотрицательные числа нужно выписать в выводе в обратном порядке чем они были при вводе.
Вывод окончите значением -1.
Для простоты предположим, что длина последовательности до 50.
Решение задачи: «Неотрицательные числа нужно выписать в порядке, обратном тому, в котором они вводились»
textual
Листинг программы
type PNode = ^Node; Node = record data: integer; link: PNode; end; var stack, tmp:PNode; num: integer; begin stack := nil; while true do begin read(num); if num < 0 then break; new(tmp); tmp^.data := num; tmp^.link := stack; stack := tmp; end; while stack <> nil do begin tmp := stack; stack := tmp^.link; write(tmp^.data, ' '); dispose(tmp); end; writeln(-1); end.
Объяснение кода листинга программы
- Объявлены тип данных PNode и структура Node, представляющая узел в связном списке
- Объявлены переменные stack, tmp, num типа PNode и integer соответственно
- Инициализируется переменная stack значением nil
- Запускается бесконечный цикл, прерываемый при вводе отрицательного числа
- В каждой итерации цикла считывается число и создается новый узел для его хранения
- Узел добавляется в конец связного списка, хранящегося в переменной stack
- После окончания цикла связный список обходит в обратном порядке и выводит значения каждого узла
- Выводится -1, чтобы указать на окончание вывода
- В конце программы вызывается функция Dispose для освобождения памяти, выделенной под каждый узел связного списка
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д