Pilha com entrada 1 e 0

3 respostas
java
Breno_Luizetto

estou tentando resolver este enunciado, mas não sei ao certo como posso faze-lo:

Para que uma estrutura de dados Pilha funcione corretamente, é necessário que ela atenda a algumas restrições. Por exemplo, é necessário que não se empilhe mais elementos que o tamanho da pilha, e nem seja possível remover elementos quando a Pilha estiver vazia.

Deseja-se escrever um programa que verifique se um conjunto de operações feito em uma Pilha pode ser realizado. Você foi contratado para escrever este programa.

O programa ( main ) que leia um número inteiro representando o tamanho de uma pilha, e depois leia uma sequência de números formada por 0’s e 1’s, onde 1 significa empilhar e 0 significa desempilhar.

Seu programa deverá informar se a sequência pode ou não ser executada.

OBS : Você precisa apenas entregar como resposta o método main , com a lógica desenvolvida. Não é necessário usar uma estrutura Pilha necessariamente neste exercício. Ele é apenas uma prova conceitual, ou seja, apenas valida a sequencia, então pode ser feito sem a Pilha. Mas se você quiser resolver utilizando uma Pilha, considere que a Pilha já existe e você não precisará colocar na resposta a classe Pilha.

Exemplos:

Para tamanho: 3

entrada: 110010 saída: pode ser executada

entrada: 010011 saída: não pode ser executada

entrada: 111011 saída: não pode ser executada

3 Respostas

TerraSkilll

Tá, mas qual sua dificuldade em específico? Pois você só postou o enunciado.

Supondo que você sabe criar um programa simples com um método main, o exercício te pede pra ler um inteiro, que determina quantos números 0 e 1 serão lidos em seguida. Conseguiu chegar nessa parte ao menos?

A ideia geral é que, ao final da execução, a pilha esteja vazia. Isso depende de cada operação (0 para desempilhar, 1 para empilhar). Então, a sequência 1010 resulta em uma pilha vazia e numa execução correta, enquanto que 1101 não resulta em uma pilha vazia.

Abraço.

Breno_Luizetto

a ideia do enunciado eu entendi, porém não entendi como aplicar um código q leia 1 e empilhe, e 0 que desempilhe

TerraSkilll

É só usar if em cada caractere da string de entrada.

String entrada = "1010"; // isso vai ser digitado pelo usuário

    for(int i = 0; i < entrada.length(); i++){
      if (entrada.charAt(i) == '1')
        empilhar();
      else 
        desempilhar();
    }

Abraço.

Criado 12 de junho de 2020
Ultima resposta 13 de jun. de 2020
Respostas 3
Participantes 2