Programar em C/Pilha: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
He7d3r.bot (discussão | contribs)
Atualizando a categoria do livro, com AutoCat (detalhes). utilizando AWB
Linha 2:
Pilha ou stack é uma lista linear em que todas as inserções e remoções de elemento só podem ser feitos em uma extremidade chamada topo.As pilhas também são chamadas de estruturas LIFO (Last In First Out) ou seja o último elemento inserido é o primeiro removido.
{{AutoCat}}
==Construção do protótipo de um elemento da lista.==
 
<source lang="C">
typedef struct Elemento_da_lista{
char *dados;
struct Elemento_da_lista *proximo;
}Elemento;
</source>
 
<source lang="C">
typedef struct Localizar{
Element *inicio;
int tamanho;
} Pilha;
</source>
 
==Inicialização==
<source lang="C">
void iniciar (Pilha *monte){
monte->inicio = NULL;
monte->tamanho = 0;
}
</source>
==Inserir um elemento na pilha(push)==
<source lang="C">
int empilhar(Pilha * monte, char *dados){
Elemento *novo_elemento;
if ((novo_elemento = (Elemento *) malloc (sizeof (Elemento))) == NULL)
return -1;
if ((novo_elemento->dados = (char *) malloc (50 * sizeof (char)))
== NULL)
return -1;
strcpy (novo_elemento->dados, dados);
novo_elemento->proximo = monte->inicio;
monte->inicio = novo_elemento;
monte->tamanho++;
}
</source>
==Retirar um elemento da pilha (pop)==
<source lang="C">
int desempilhar (Pilha *monte){
Elemento *p_elemento;
if (monte->tamanho == 0)
return -1;
p_elemento = monte->inicio;
monte->inicio = monte->inicio->proximo;
free (p_elemento->dados);
free (p_elemento);
monte->tamanho--;
return 0;
}
</source>
==Imprimir os elementos da pilha==
<source lang="C">
void mostrar(Pilha * monte){
Elemento *atual;
int i;
atual = monte->inicio;
 
for(i=0;i<monte->tamanho;++i){
printf("\t\t%s\n", atual->dados);
atual = atual->proximo;
}
}
</source>