-
Uma pilha é uma estrutura de dados que admite remoção de elementos e inserção de novos objetos. Mais especificamente, uma pilha (= stack) é uma estrutura sujeita à seguinte regra de operação: sempre que houver uma remoção, o elemento removido é o que está na estrutura há menos tempo.
Em outras palavras, o primeiro objeto a ser inserido na pilha é o último a ser removido. Essa política é conhecida pela sigla LIFO (= Last-In-First-Out).
Fonte: https://www.ime.usp.br/~pf/algoritmos/aulas/pilha.html
-
Inserindo na pilha os digitos de um número e retirando em seguida vou ter o numero invertido, mas não entendi para que serve essa parte:
" multiplicados pelo valor posicional correto e somados "
-
O algoritmo faz uso de uma pilha (stack) sim, mas não basta retirar os valores a partir do topo da pilha pois o resultado esperado é um número inteiro e não uma string (de dígitos) invertida. É uma questão complexa! Vou colocar o algoritmo (Java) para que possamos entender melhor isso.
// Java program to reverse the number
// using a stack
import java.util.Stack;
public class GFG
{
// Stack to maintain order of digits
static Stack st= new Stack<>();
// Function to push digits into stack
static void push_digits(int number)
{
while(number != 0)
{
st.push(number % 10);
number = number / 10;
}
}
// Function to reverse the number
static int reverse_number(int number)
{
// Function call to push number's
// digits to stack
push_digits(number);
int reverse = 0;
int i = 1;
// Popping the digits and forming
// the reversed number
while (!st.isEmpty())
{
reverse = reverse + (st.peek() * i);
st.pop();
i = i * 10;
}
// Return the reversed number formed
return reverse;
}
// Driver program to test above function
public static void main(String[] args)
{
int number = 39997;
System.out.println(reverse_number(number));
}
}
A parte da questão que diz: "multiplicados pelo valor posicional correto e somados, obtendo-se o número invertido" é vista no algoritmo dentro do while: reverse = reverse + (st.peek() * i);
-
Pilha = LIFO -> Last in, first out (último a entrar, primeiro a sair)
Fila = FIFO -> Fisrt in, first out (primeiro a entrar, primeiro a sair)
-
Vamos utilizar um número com apenas 03 dígitos para simplificar
Para se inverter o um número, primeiramente armazena-se este em uma pilha: ex: 123456 armazenado dígito a dígito fica 1,2,3
Como na pilha o último a entrar é o primeiro a sair, a ordem de retirada será 3,2,1
Multiplicar pelo valor posicional significa multiplicar o dígito das centenas por 100, das dezenas por 10 e das unidades por 1:
3*100+2*10+1*1 = 321
Portanto a estrutura deve ser uma pilha, alternativa C
-
Força Guerreiro!!!!!!