Você deve implementar duas pilhas em um único array A[1…n] de modo que nenhuma das pilhas transborde, a menos que o número total de elementos nas duas pilhas juntas seja n. Considerando que as operações PUSH e POP sejam executadas em tempo O(1), assinale a opção cuja estratégia descrita permite essa implementação de forma eficiente.
- A Usando-se dois ponteiros, um começando no início do array para a primeira pilha e um começando no final do array para a segunda pilha, movendo-se em direção um ao outro à medida que os elementos são inseridos.
- B Usando-se um ponteiro no início do array para ambas as pilhas, inserindo elementos na primeira pilha e removendo da segunda pilha sempre que necessário
- C Dividindo-se o array em duas partes iguais e atribuindo a primeira pilha à metade esquerda e a segunda pilha à metade direita. Os elementos entre as duas metades devem ser movidos conforme necessário.
- D Usando-se um array circular com ambas as pilhas crescendo em direções opostas e garantindo-se que os elementos sejam sempre inseridos na pilha com mais espaço disponível.
- E Implementando-se a primeira pilha utilizando a metade esquerda do array e a segunda pilha usando a metade direita, mas os tamanhos das pilhas podem mudar dinamicamente.