«Внедрение» обычно означает «писать, чисто и просто».Ваш преподаватель хочет, чтобы вы написали код, который будет выполнять то, что говорит задание.
Стеки фиксированного размера (n
) могут быть легко реализованы в виде массива с текущей глубиной стека, но у вас есть дополнительные возможностиназначение, поскольку вам разрешено иметь только n
элементов в обоих стеках, а не каждый стека.
Я бы реализовал это следующим образом (псевдо-код только потому, что это домашнее задание и, в любом случае, вы не указали язык):
# Create the two stacks, each of size sz.
init_stack (sz):
allocate stack1 as array[1 to sz] of integer
allocate stack2 as array[1 to sz] of integer
set stack1sz to 0
set stack2sz to 0
set maxsz to sz
# Push the value val onto stack stk.
push_stack (stk,val):
if stk is not equal to 1 or 2:
return error
if stack1sz + stack2sz is equal to maxsz:
return error
if stk is 1:
add 1 to stack1sz
set element stack1sz of stack1 to val
else:
add 1 to stack2sz
set element stack2sz of stack2 to val
# Pop a value off stack stk.
pop_statkck (stk):
if s is not equal to 1 or 2:
return error
if stk is 1:
if stack1sz is 0:
return error
set val to element stack1sz of stack1
subtract 1 from stack1sz
else:
if stack2sz is 0:
return error
set val to element stack2sz of stack2
subtract 1 from stack2sz
return val
Переменные stack1
, stack2
, stack1sz
, stack2sz
и maxsz
должны быть объявлены таким образом, чтобы они сохранялись между вызовами функций (т. Е. Не локальными).Все остальные являются временными.
Если у вас возникли проблемы с преобразованием этого в определенный язык, оставьте комментарий, и я предоставлю указатели того, что искать.