Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Pilha para inteiros/char em C
- by William Antônio Siqueira
- Informática com Ênfase em Banco de Dados
- FATEC SJC 2009
- Long Live To C Language
- */
- #ifndef ___STDIO_H_
- #include <stdio.h>
- #endif
- #ifndef _PILHA
- #define _PILHA pilha
- #endif
- //Constante que indica o fim da Pilha (Stack UnderFlow)
- #ifndef FIM
- #define FIM -1
- #endif
- typedef struct _pilha{
- int *dados, tamanho, pos;
- }pilha;
- /*
- Recebe um ponteiro para pilha, inicializa as variáveis e aloca memória
- Retorna NULL caso haja erro na alocação
- */
- int novaPilha(pilha *pPilha, int tamanho){
- pPilha->pos = 0;
- pPilha->tamanho = tamanho;
- return (pPilha->dados = malloc(tamanho * sizeof(int)));
- }
- /*
- Remove um elementos da Pilha
- */
- int pop(pilha *pPilha){
- if(!pPilha->pos)
- return FIM;
- else
- return pPilha->dados[--pPilha->pos];
- }
- /*
- Empurra um elemento da Pilha
- */
- void push(pilha *pPilha, int elemento){
- if(pPilha->pos == pPilha->tamanho)
- printf("Pilha cheia!\n");
- else
- pPilha->dados[pPilha->pos++] = elemento;
- }
- /*
- Esvazia todos os elementos da Pilha, imprimindo o resultado
- */
- void esvaziaPilha(pilha *pPilha){
- int x;
- while(x = pop(pPilha)) printf("%d ", x);
- printf("\n");
- }
- /*
- Imprime a pilha sem mexer nos elementos que já foram colocados
- */
- void imprimirPilha(pilha *pPilha){
- int i;
- for(i=pPilha->pos-1;i>-1;i--)
- printf("%d ", pPilha->dados[i]);
- printf("\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement