#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct pilha
{
 char caractere;
 struct pilha *prox;//neste caso o proximo aponta para o anterior
} *no, *topo ;

//Chamado de PUSH p/ a Pilha (Stack)
struct pilha *insere(char carac)
{
 if((no = (struct pilha*) malloc(sizeof(struct pilha))) != NULL)
 {
  (*no).caractere = carac;
  (*no).prox = topo;
  topo = no;
 }
 return no;
}

//Chamado de POP p/ a Pilha (Stack)
char retira(void)
{
 char desempilhado =' ';
 struct pilha *aux;
 if(topo)//se topo aponta p/ NULL retorna falso
 {
  desempilhado = (*topo).caractere;
  printf("n%c",desempilhado);//linha apenas p/ mostrar a limpeza da memoria
  fflush(stdin);
  aux = (*topo).prox;
  free(topo);
  topo = aux;
 }
 return(desempilhado);
}

int main(void)
{
 char caract, opera='n';
 char desemp;
 struct pilha *p_novo;
 topo = NULL ;
 while(opera != 's')
 {
  printf("nEscolha (e)mpilhar, (d)esempilhar ou (s)air: ");
fflush(stdin);
 opera=getche();
 printf("n");
 fflush(stdin);
 if((opera == 'e')||(opera == 'E'))
 {
  printf("Caractere: ");
  fflush(stdin);
  caract=getche();
  if (p_novo = insere(caract))
  {
         printf("nEmpilhado o caractere %c (end. de memoria: %p)",caract,p_novo) ;
         fflush(stdin);
  }
  else
  {
     printf("nErro - Nao conseguiu alocar memoria!") ;
     fflush(stdin);
  }
 }
 else
     if((opera == 'd')||(opera == 'D'))
        if ((desemp = retira()) != ' ')
        {
           printf("nDesempilhado caractere: %c",desemp) ;
           fflush(stdin);
        }
        else
        {
           printf("nPilha vazia");
           fflush(stdin);
        }
}
while((desemp = retira()) != ' ');
printf("n");
system("PAUSE");
return 0;
}

Mais conteúdo relacionado

PDF
Estrutura de dados - Pilhas
PPTX
Estrutura de dados em Java - Pilhas
PDF
Pilha e filas
PDF
Pilha e Fila Estática
PPTX
Estrutura de dados em Java - Filas
PDF
Estrutura de dados - Filas
PDF
Estrutura de dados - Implementação de filas com listas
Estrutura de dados - Pilhas
Estrutura de dados em Java - Pilhas
Pilha e filas
Pilha e Fila Estática
Estrutura de dados em Java - Filas
Estrutura de dados - Filas
Estrutura de dados - Implementação de filas com listas

Mais procurados (20)

PPTX
Estrutura de dados em Java - Filas com lista encadeada
PDF
Estrutura de Dados - PILHAS
PDF
Estrutura de Dados - Listas Encadeadas
PDF
Pilha e Fila Dinamica
PPTX
Estrutura de dados em Java - Filas
PPT
Pilhas e Filas
PPTX
Introdução à linguagem c
PDF
Filas encadeadas
PPTX
PDF
Pilhas encadeadas
PDF
Conhecendo ou relembrando C
DOCX
Usando o winplot
PPT
Aula5 introducao c
PPT
Aula5 introducao c
PPTX
PDF
Apostila rpira
ODP
Linguagem C 09 Ponteiros
PDF
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
PPTX
Aula02 Pilhas
DOCX
apostila C++
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de Dados - PILHAS
Estrutura de Dados - Listas Encadeadas
Pilha e Fila Dinamica
Estrutura de dados em Java - Filas
Pilhas e Filas
Introdução à linguagem c
Filas encadeadas
Pilhas encadeadas
Conhecendo ou relembrando C
Usando o winplot
Aula5 introducao c
Aula5 introducao c
Apostila rpira
Linguagem C 09 Ponteiros
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
Aula02 Pilhas
apostila C++
Anúncio

Semelhante a Pilha em C (20)

PDF
Árvore Binária em C
PPT
Lista ligada simples
PDF
Controle de Fluxo, Exceções, Assertivas
PDF
Aula6 - Linguagem C
PPTX
Linguagem C - Entrada e Saída
PDF
aula de cálculo pdf atualizado 2023 funções
DOCX
Biblioteca strings profª ms
PDF
Apostila Algoritmos e Estrutura de Dados (AEDS)
PDF
Calculadora
PDF
Gabarito funcoes
PPTX
Java hidden features
PDF
Vetores, Matrizes e Strings em C Parte 3
PDF
Lista simplesmente encadeada: Operações de buscar e atualizar
ODP
Linguagem C 03 Estruturas De Decisao
PDF
Lista simplesmente encadeada
PDF
Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
PDF
Lista duplamente encadeada
PPTX
Aula 7 decisao - Programação 1
Árvore Binária em C
Lista ligada simples
Controle de Fluxo, Exceções, Assertivas
Aula6 - Linguagem C
Linguagem C - Entrada e Saída
aula de cálculo pdf atualizado 2023 funções
Biblioteca strings profª ms
Apostila Algoritmos e Estrutura de Dados (AEDS)
Calculadora
Gabarito funcoes
Java hidden features
Vetores, Matrizes e Strings em C Parte 3
Lista simplesmente encadeada: Operações de buscar e atualizar
Linguagem C 03 Estruturas De Decisao
Lista simplesmente encadeada
Tutorial dev cpp 002 - criação, leitura e alteração de arquivos
Lista duplamente encadeada
Aula 7 decisao - Programação 1
Anúncio

Mais de Luiz Francisco Bozo (20)

DOC
Modelo totem
PDF
Esboços de chassis e componentes internos de Servidor
PDF
Tutorial do shell script para Clonar HDs WIN7 usando Linux
PDF
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
PDF
PDF
Alocação Dinâmica em C
PDF
Configurar Kernel Linux para usar os Sensores de uma Placa-mãe
PDF
Display HD44780 usando PIC 18F4550 e USB
PDF
Configuração do Router/Bridge Wireless Tsunami
PDF
Pequeno exemplo sobre strings nmea
PDF
PDF
Função Retorna MAC ADDRESS do Adaptador de rede
PDF
Status Configuração inicia router/bridge wireless Tsunamil
PDF
Kernel driver
PDF
Pmbok e Agil (folha 01)
PDF
Roteiro IOC 05
PDF
Roteiro IOC 03_2
PDF
Roteiro IOC 03_1
PDF
Roteiro IOC 02
Modelo totem
Esboços de chassis e componentes internos de Servidor
Tutorial do shell script para Clonar HDs WIN7 usando Linux
Tutorial do shell script para criar imagens de HDs Win7 usando Linux
Alocação Dinâmica em C
Configurar Kernel Linux para usar os Sensores de uma Placa-mãe
Display HD44780 usando PIC 18F4550 e USB
Configuração do Router/Bridge Wireless Tsunami
Pequeno exemplo sobre strings nmea
Função Retorna MAC ADDRESS do Adaptador de rede
Status Configuração inicia router/bridge wireless Tsunamil
Kernel driver
Pmbok e Agil (folha 01)
Roteiro IOC 05
Roteiro IOC 03_2
Roteiro IOC 03_1
Roteiro IOC 02

Último (20)

PPTX
Basic life Support - suporte tecnico de vida
PDF
E-BOOK-Inovacao-em-Ciencia-e-Tecnologia-de-Alimentos.pdf
PPT
Os Grandes Períodos Históricos UESC 2009.1
PPTX
AULA 01 - INTRODUÇÃO AO ATENDIMENTO HUMANIZADO.pptx
PPTX
AULA 5 - HIGIENE HOSPITALAR .pptx
PDF
Sociologia Cultural, Aspecto teóricos e conceitos
PPTX
CIPA+-++Mapa+de+Risco-1.pptx levantamento
PPTX
125511 - Aula 1 - América portuguesa antes da conquista patrimônio e preserva...
PPTX
REVISA-GOIAS-6o-ANO-LP-3o-BIMESTRE-PPT.pptx
PDF
diário de palestra DDS Online - Apostila.pdf
PDF
DECISÃO (2).pdf Derrota histórica do Sintero expõe racha interno e fragilidad...
PDF
Historia-da-Psicologia-Rumos-e-percursos.pdf
PPTX
Treinamento de Espaço Confinado_Trabalhadores e Vigias NR 33.pptx
PPTX
entorseestadodechoque. Aula de primeiros socorros
PPTX
NR 5 Treinamento completo gestão CIPA.pptx
PDF
639039693-CURSO-DE-PORTUGUES-Prof-Deivid-Xavier.pdf
PDF
_Filosofia_-_SLIDES___questões.pdf.pptx (3).pdf
PDF
Historia da Gastronomia Mundial por Daianna Marques dos Santos
PPTX
Primeiros Socorros. Aula 1 VEROUVIRSENTIR.pptx
PPTX
Apresentação Treinamento Percepção de Riscos-1.pptx
Basic life Support - suporte tecnico de vida
E-BOOK-Inovacao-em-Ciencia-e-Tecnologia-de-Alimentos.pdf
Os Grandes Períodos Históricos UESC 2009.1
AULA 01 - INTRODUÇÃO AO ATENDIMENTO HUMANIZADO.pptx
AULA 5 - HIGIENE HOSPITALAR .pptx
Sociologia Cultural, Aspecto teóricos e conceitos
CIPA+-++Mapa+de+Risco-1.pptx levantamento
125511 - Aula 1 - América portuguesa antes da conquista patrimônio e preserva...
REVISA-GOIAS-6o-ANO-LP-3o-BIMESTRE-PPT.pptx
diário de palestra DDS Online - Apostila.pdf
DECISÃO (2).pdf Derrota histórica do Sintero expõe racha interno e fragilidad...
Historia-da-Psicologia-Rumos-e-percursos.pdf
Treinamento de Espaço Confinado_Trabalhadores e Vigias NR 33.pptx
entorseestadodechoque. Aula de primeiros socorros
NR 5 Treinamento completo gestão CIPA.pptx
639039693-CURSO-DE-PORTUGUES-Prof-Deivid-Xavier.pdf
_Filosofia_-_SLIDES___questões.pdf.pptx (3).pdf
Historia da Gastronomia Mundial por Daianna Marques dos Santos
Primeiros Socorros. Aula 1 VEROUVIRSENTIR.pptx
Apresentação Treinamento Percepção de Riscos-1.pptx

Pilha em C

  • 1. #include <stdio.h> #include <stdlib.h> #include <string.h> struct pilha { char caractere; struct pilha *prox;//neste caso o proximo aponta para o anterior } *no, *topo ; //Chamado de PUSH p/ a Pilha (Stack) struct pilha *insere(char carac) { if((no = (struct pilha*) malloc(sizeof(struct pilha))) != NULL) { (*no).caractere = carac; (*no).prox = topo; topo = no; } return no; } //Chamado de POP p/ a Pilha (Stack) char retira(void) { char desempilhado =' '; struct pilha *aux; if(topo)//se topo aponta p/ NULL retorna falso { desempilhado = (*topo).caractere; printf("n%c",desempilhado);//linha apenas p/ mostrar a limpeza da memoria fflush(stdin); aux = (*topo).prox; free(topo); topo = aux; } return(desempilhado); } int main(void) { char caract, opera='n'; char desemp; struct pilha *p_novo; topo = NULL ; while(opera != 's') { printf("nEscolha (e)mpilhar, (d)esempilhar ou (s)air: ");
  • 2. fflush(stdin); opera=getche(); printf("n"); fflush(stdin); if((opera == 'e')||(opera == 'E')) { printf("Caractere: "); fflush(stdin); caract=getche(); if (p_novo = insere(caract)) { printf("nEmpilhado o caractere %c (end. de memoria: %p)",caract,p_novo) ; fflush(stdin); } else { printf("nErro - Nao conseguiu alocar memoria!") ; fflush(stdin); } } else if((opera == 'd')||(opera == 'D')) if ((desemp = retira()) != ' ') { printf("nDesempilhado caractere: %c",desemp) ; fflush(stdin); } else { printf("nPilha vazia"); fflush(stdin); } } while((desemp = retira()) != ' '); printf("n"); system("PAUSE"); return 0; }