Pilha
Publicado por Jose Maria Silveira Neto 28/03/2004
[ Hits: 9.270 ]
Mais uma implementacao de pilha em C.
<pre>
<font color="#0000ff">/*</font><font color="#0000ff"> Pilha</font>
<font color="#0000ff"> * Preparacao para a OBI 2004</font>
<font color="#0000ff"> * Jose Maria Silveira Neto </font>
<font color="#0000ff"> * </font><font color="#0000ff">*/</font>
<font color="#a520f7">#include</font><font color="#ff00ff"><stdio.h></font>
<font color="#a520f7">#define max </font><font color="#ff00ff">50</font>
<font color="#a520f7">#define nulo </font><font color="#ff00ff">0</font>
<font color="#298a52"><b>int</b></font> pilha[max];
<font color="#0000ff">// Limpa a pilha. Coloca em toda posicao da pilha o valor nulo</font>
<font color="#298a52"><b>void</b></font> limpa_pilha(){<font color="#298a52"><b>int</b></font> i; <font color="#a52829"><b>for</b></font>(i=<font color="#ff00ff">0</font>;i<max;i++) pilha[i]=nulo;}
<font color="#0000ff">// Coloca A no topo da pilha. O topo eh o primeiro nulo partindo do comeco.</font>
<font color="#298a52"><b>void</b></font> empilha(<font color="#298a52"><b>int</b></font> a){
<font color="#298a52"><b>int</b></font> topo=<font color="#ff00ff">0</font>;
<font color="#a52829"><b>while</b></font> (pilha[topo]!=nulo){topo++;}
pilha[topo]=a;
}
<font color="#0000ff">// Imprime a pilha para a saida. Imprime todo valor ate que nulo.</font>
<font color="#298a52"><b>void</b></font> mostra_pilha(){
<font color="#298a52"><b>int</b></font> topo=<font color="#ff00ff">0</font>;
<font color="#a52829"><b>while</b></font> (pilha[topo]!=nulo){ printf(<font color="#ff00ff">"</font><font color="#6b59ce">%d</font><font color="#ff00ff"> "</font>,pilha[topo]); topo++;}
printf(<font color="#ff00ff">"</font><font color="#6b59ce">\n</font><font color="#ff00ff">"</font>);
}
<font color="#0000ff">// Retira o valor do topo da pilha. O topo eh o primeiro nulo partindo do comeco</font>
<font color="#298a52"><b>void</b></font> desempilha(){
<font color="#298a52"><b>int</b></font> topo=<font color="#ff00ff">0</font>;
<font color="#a52829"><b>while</b></font>(pilha[topo]!=nulo){ topo++;}
<font color="#a52829"><b>if</b></font> (topo><font color="#ff00ff">0</font>) pilha[topo-<font color="#ff00ff">1</font>]=nulo;
}
<font color="#0000ff">// Um exemplo de utilizacao destas funcoes</font>
<font color="#298a52"><b>int</b></font> main(){
<font color="#298a52"><b>int</b></font> novo=<font color="#ff00ff">1</font>;
limpa_pilha();
empilha(<font color="#ff00ff">3</font>); mostra_pilha();
empilha(<font color="#ff00ff">1</font>); mostra_pilha();
empilha(<font color="#ff00ff">4</font>); mostra_pilha();
empilha(<font color="#ff00ff">5</font>); mostra_pilha();
desempilha(); mostra_pilha();
empilha(<font color="#ff00ff">1</font>); mostra_pilha();
}
<font color="#0000ff">// Editado no GVim</font>
</pre>
Raiz cúbica pelo método de bissecção
Algoritmo estatístico para cálculo de PI em C
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Conky, alerta de temperatura alta (11)
Assisti Avatar 3: Fogo e Cinzas (3)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (42)









