Работа с деком на основе статических массивов - Free Pascal

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

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

Вообщем я совсем в этом не разбираюсь, очень надеюсь на вашу помощь. Нашел вот такое:
Листинг программы
  1. type
  2. deque = record
  3. data: array[1..MAXSIZE] of integer;
  4. head, tail: integer;
  5. end;
  6. procedure push_front(var d: deque; x: integer);
  7. begin
  8. if d.head < 1 then d.head += maxsize;
  9. d.data[(d.head - 1) mod maxsize] := x;
  10. end;
  11. procedure push_back(var d: deque; c: integer);
  12. begin
  13. d.data[(d.tail + 1) mod maxsize] := x;
  14. end;
  15. function pop_front(var d: deque): integer;
  16. begin
  17. result := d.data[(d.head + 1) mod maxsize];
  18. end;
  19. function pop_back(var d: deque): integer;
  20. begin
  21. if d.head < 1 then d.tail += maxsize;
  22. result := d.data[(d.head - 1) mod maxsize];
  23. end;
Но я даже не понимаю то это, или не то) К тому же это Pascal ABC, а мне надо Free Pascal. Как я понял, мне надо чтобы каждый элемент был отдельным массивом, и с деком можно было производить операции (удаление, добавление, что-то еще?) Вот задание:

1. Написать программу для работы со структурой данных "Дек". 2. Структура данных должна быть реализована на основе статических массивов. 3. Работы со структурой должны осуществляться с помощью текстового пользовательского меню.

Решение задачи: «Работа с деком на основе статических массивов»

textual
Листинг программы
  1. type TData = Integer;
  2. function  deqLength(const q: array of TData; h, t: Integer): Integer;
  3. begin
  4.   h:=t-h; if h<0 then Inc(h,High(q)+1); deqLength:=h;
  5. end;
  6. procedure deqClear(const q: array of TData; var h, t: Integer);
  7. begin
  8.   h:=0; t:=0;
  9. end;
  10. procedure deqPushBack(const x: TData; var q: array of TData; var h, t: Integer);
  11. begin
  12.   q[t]:=x; Inc(t); if t>High(q) then Dec(t,High(q)+1);
  13. end;
  14. procedure deqPushFront(x: TData; var q: array of TData; var h, t: Integer);
  15. begin
  16.   Dec(h); if h<0 then Inc(h,High(q)+1); q[h]:=x;
  17. end;
  18. procedure deqPopBack(var x: TData; const q: array of TData; var h, t: Integer);
  19. begin
  20.   Dec(t); if t<0 then Inc(t,High(q)+1); x:=q[t];
  21. end;
  22. procedure deqPopFront(var x: TData; const q: array of TData; var h, t: Integer);
  23. begin
  24.   x:=q[h]; Inc(h); if h>High(q) then Dec(h,High(q)+1);
  25. end;
  26. var
  27.   h, t: Integer;
  28.   q: array [0..99] of TData;
  29.   x: TData;
  30. begin
  31.   for x:=1 to 10 do deqPushBack(x,q,h,t);
  32.   WriteLn(deqLength(q,h,t));
  33.   while h<>t do begin
  34.     deqPopFront(x,q,h,t); Write(' ',x);
  35.   end; WriteLn;
  36. end.

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

  1. Тип данных TData определен как Integer.
  2. Функция deqLength принимает массив q типа array of TData, а также два целых числа h и t в качестве параметров и возвращает целое число.
  3. Функция deqClear принимает массив q типа array of TData и два целых числа h и t в качестве параметров и возвращает ничего.
  4. Функция deqPushBack принимает число x типа TData и массив q типа array of TData и два целых числа h и t в качестве параметров и возвращает ничего.
  5. Функция deqPushFront принимает число x типа TData и массив q типа array of TData и два целых числа h и t в качестве параметров и возвращает ничего.
  6. Функция deqPopBack принимает переменную x типа TData и массив q типа array of TData и два целых числа h и t в качестве параметров и возвращает ничего.
  7. Функция deqPopFront принимает переменную x типа TData и массив q типа array of TData и два целых числа h и t в качестве параметров и возвращает ничего.
  8. В начале программы определен массив q типа array [0..99] of TData и две переменные h и t типа Integer.
  9. В цикле for x:=1 to 10 выполняется 10 операций deqPushBack, которые добавляют числа от 1 до 10 в массив q.
  10. Вызывается функция deqLength с массивом q, h и t в качестве параметров.
  11. В цикле while h<>t выполняется 10 операций deqPopFront, которые удаляют числа из начала массива q, а затем выводится каждое удаленное число.
  12. По завершении цикла выводится символ новой строки.
  13. В конце программы вызывается функция WriteLn.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

10   голосов , оценка 4.3 из 5

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

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

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