LIFO
Origem: Wikipédia, a enciclopédia livre.
- Nota: Se procura Pilha, uma bateria, consulte Pilha.
LIFO é um acrônimo para a expressão inglesa Last In, First Out que, em português significa último a entrar, primeiro a sair. Em ciência da computação, refere-se a estruturas de dados do tipo pilha. É equivalente a FILO, que significa First In, Last Out e pode também ser referida como pilha.
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.
Exemplo em Pascal:
Unit Pilha; Interface Const Limite=50; Type TItem=integer; TPilha=record Topo:Integer; {será o indice que controlará o último elemento a entrar na pilha} Itens:array [1..Limite] of TItem; {Um vetor que armazenará os itens} end; procedure Inicializa(var p:TPilha); {Inicializa a pilha} procedure Acrescenta(var p:TPilha; e:TItem); {acrescenta itens a pilha} function EstaCheio(p: TPilha):boolean; {verifica se a pilha está cheia} function EstaVazio(p: TPilha):boolean; {verifica se a pilha está vazia} function RetiraItem(var p:TPilha):TItem; {função retorna e remove o último item acrescido a pilha} function Ultimo(p:TPilha):TItem; {retorna o último item da pilha sem remover} // Implementacao Implementation procedure Inicializa(var p:TPilha); {Inicializa a pilha} begin p.Topo:=0; end; procedure Acrescenta(var p:TPilha; e:TItem); {acrescenta itens a pilha} begin if (not EstaCheio(p)) then begin p.topo:=p.topo+1; p.Itens[p.topo]:=e; end else writeln('A pilha esta cheia - não pode acrescentar novos elementos') end; function EstaCheio(p: TPilha):boolean; {verifica se a pilha está cheia} begin EstaCheio:= p.topo=Limite; end; function EstaVazio(p: TPilha):boolean; {verifica se a pilha está vazia} begin EstaVazio:=P.topo=0; end; function RetiraItem(var p:TPilha):TItem; {função retorna e remove o último item acrescido a pilha} begin if (not (EstaVazio(p))) then begin RetiraItem:=p.Itens[p.topo]; p.topo:=p.topo-1; end else begin writeln('Impossível retirar item - a pilha está vazia'); end; end; function Ultimo(p:TPilha):TItem;{retorna o último item da pilha sem remover} begin Ultimo:=p.Itens[p.topo]; end; end.