LIFO
-
Nota: Se procura Pilha, uma bateria, veja Pilha.
Em ciência da computação, LIFO (acrônimo para a expressão inglesa Last In, First Out que, em português significa último a entrar, primeiro a sair) refere-se a estruturas de dados do tipo pilha. É equivalente a FILO, que significa First In, Last Out .
O conceito de pilha é amplamente utilizado na informática, como, por exemplo, durante a execução de um programa, para o armazenamento de valores de variável local a um bloco e também para conter o endereço de retorno do trecho de programa que chamou a função ou procedimento atualmente em execução.
Usa-se os termos push e pop para denominar a inserção e remoção de elementos da pilha, respectivamente. Usa-se o termo top para consultar o elemento do topo da pilha, sem o remover.
Uma pilha é uma lista linear na qual o primeiro elemento a entrar é o último elemento a sair. Ela possui apenas uma entrada, chamada de topo, a partir da qual os dados entram e saem dela.
Índice |
[editar] Inserção, remoção e consulta do elemento de topo
A inserção (PUSH) é o método que insere um elemento no topo de uma Pilha. Já a remoção (POP) é o método que remove um elemento do topo de uma Pilha.
Em programação estruturada temos:
/** Protótipo Na Linguagem C * Para uma PILHA de elementos inteiros */ void PUSH(int * Pilha, int elemento); int POP(int * Pilha); int TOP(int * Pilha);
Exemplo de utilização da pilha substituindo recursão no cálculo do Fatorial de N, implementado em JAVA no mais puro estilo da linguagem C
/** * Fatorial de N utilizando o conceito de pilha *@autor Tarcnux *@param N Inteiro * * Para compilar * javac Fatorial.java * * Para rodar * java Fatorial */ import java.util.Stack; import java.util.Scanner; class Fatorial { public static void main (String[] args) { Scanner scan = new Scanner ( System.in ); int n=1; System.out.print("\nDigite um numero: "); n = scan.nextInt(); Fatorialx(n); } public static void Fatorialx( int N ) { Stack <Integer> pilha = new Stack<Integer>(); int fatorial = 1, aux = N; //Empilha while(aux > 1) pilha.push(aux--); //Empilha e depois decrementa while(!pilha.empty()) //Enquanto há elementos na pilha fatorial *= pilha.pop(); //Desempilha e calcula o Fatorial System.out.println("O fatorial de " + N + " eh: " + fatorial); } }