Pilha

Publicado por Jose Maria Silveira Neto 28/03/2004

[ Hits: 8.599 ]

Download pilha.c




Mais uma implementacao de pilha em C.

  



Esconder código-fonte

<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>

Scripts recomendados

Lista duplamente encadeada com cabecalho

Fila estática em C

Salva retorno do sistema

Deep First Search

Lista simplesmente encadeada com busca auto-organizada


  

Comentários
[1] Comentário enviado por HeltonBarbosa em 07/07/2006 - 11:22h

Muito bom vc mostrar como fica a pilha ao inserir um novo número. Isso ajuda a entender mais sobre pilha.
Fui...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts