Реализовать дек ограниченного размера на базе массива - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д