Составить новый дек, записывая в него элементы исходного дека, изымая их поочередно слева и справа - Turbo Pascal

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

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

Дан дек строковых элементов. Составить новый дек, записывая в него элементы исходного дека, изымая их поочередно слева и справа.Помогите с подпрограммой. Вот модуль

Решение задачи: «Составить новый дек, записывая в него элементы исходного дека, изымая их поочередно слева и справа»

textual
Листинг программы
uses IDeck;
const n=10;
var
  a, b: pDec; t: TElem;
begin
  {...}
  b:=New(pDec,Init(n));
  repeat
    if not a.IsEmpty then begin a.RemoveL(t); b.AddR(t); end;
    if not a.IsEmpty then begin a.RemoveR(t); b.AddR(t); end;
  until False;
  {...}
   Dispose(b,Done);
end.

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

  1. В начале кода используется библиотека IDeck, которая представляет собой реализацию дека.
  2. Константа n определяет количество элементов в деках, которые будут использоваться в коде.
  3. Переменные a и b объявлены как pDec-переменные, которые представляют собой ссылки на объекты типа pDec.
  4. Переменная t объявлена как TElem-переменная, которая представляет собой элемент типа pDec.
  5. Строка кода b:=New(pDec,Init(n)); создает новый объект типа pDec и инициализирует его с n элементами.
  6. Цикл repeat используется для повторного выполнения блока кода до тех пор, пока условие False не станет истинным.
  7. Если переменная a не пуста (a.IsEmpty = False), то из нее удаляется левый элемент (a.RemoveL(t)) и добавляется правый элемент (b.AddR(t)) в дек b.
  8. Если переменная a не пуста (a.IsEmpty = False), то из нее удаляется правый элемент (a.RemoveR(t)) и добавляется левый элемент (b.AddR(t)) в дек b.
  9. Цикл повторяется до тех пор, пока условие False не станет истинным.
  10. По завершении работы с объектом b, он освобождается с помощью функции Dispose(b, Done).

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

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