Реализовать дек ограниченного размера на базе массива - Turbo Pascal

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

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

Деком называют структуру, которая сочетает очередь и стек : добавлять и убирать элементы можно с обоих концов. Надо реализовать дек ограниченного размера на базе массива так , чтобы каждая операция требовала ограниченного числа действий

Решение задачи: «Реализовать дек ограниченного размера на базе массива»

textual
Листинг программы
const D_SIZE = 100;
type d_item_t = double;
type d_list_t = array[1..D_SIZE] of d_item_t;
type d_comp_t = record
  list: d_list_t;
  stack: integer;
  queue: integer;
  count: integer;
end;
 
procedure DInc( var a: integer );
begin
  a := a + 1;
  if a > D_SIZE then a := 1;
end;
procedure DDec( var a: integer );
begin
  a := a - 1;
  if a < 1 then a := D_SIZE;
end;
 
procedure DReset( var d: d_comp_t );
begin
  d.stack := 1;
  d.queue := D_SIZE;
  d.count := 0;
end;
function DQueuePush( var d: d_comp_t; const item: d_item_t ): boolean;
begin
  if d.count = D_SIZE then 
    DQueuePush := false
  else begin  
    d.count := d.count + 1;
    d.list[ d.queue ] := item;  
    DDec(d.queue);
    DQueuePush := true;
  end;
end;  
function DStackPush( var d: d_comp_t; const item: d_item_t ): boolean;
begin
  if d.count = D_SIZE then 
    DStackPush:= false
  else begin
    d.count := d.count + 1;
    d.list[ d.stack ] := item;  
    DInc(d.stack);
    DStackPush := true;
  end;
end;  
function DPop( var d: d_comp_t; var r: d_item_t ): boolean;
begin
  if d.count = 0 then 
    DPop:= false
  else begin
    DDec(d.stack);
    d.count := d.count - 1;
    r := d.list[ d.stack ];
    DPop := true;
  end;
end;
 
var d: d_comp_t ;
 
var tmp: double;
begin
 
DReset(d);
DStackPush(d , 10);
DStackPush(d , 11);
DStackPush(d , 12);
DQueuePush(d , 32);
DQueuePush(d , 33);
DQueuePush(d , 34);
 
DPop(d , tmp); writeln( tmp );
DPop(d , tmp); writeln( tmp );
DPop(d , tmp); writeln( tmp );
DPop(d , tmp); writeln( tmp );
DPop(d , tmp); writeln( tmp );
DPop(d , tmp); writeln( tmp );
DPop(d , tmp); writeln( tmp );
DPop(d , tmp); writeln( tmp );
 
 
end.

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


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

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

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