Programaçao em C / pilha

315 palavras 2 páginas
// Projeto 'Pilha' através de ponteiros ou apontadores .

#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "string.h"

struct Tipo_Item { // cada item da 'pilha' corresponde a um registro utilizado por (nome) char nome[20];
};

typedef struct Celula *ponteiro; // define tipo 'Ponteiro' como sendo endereço 'Celula' struct Celula { Tipo_Item Item; ponteiro prox; };

struct Tipo_Pilha { ponteiro Topo;
};

void FazPilhaVazia(Tipo_Pilha *Pilha); int PilhaVazia(Tipo_Pilha *Pilha); void Empilha(Tipo_Item x, Tipo_Pilha *Pilha); int Desempilha(Tipo_Pilha *Pilha, Tipo_Item *x); // conjunto aplicados sobre modelo 'Tipo_Pilha' void ImprimePilha(Tipo_Pilha *Pilha);

// Este item faz com que a 'pilha' fique fazia int main() { Tipo_Item x; Tipo_Pilha Pilha; FazPilhaVazia(&Pilha); while (1) { ImprimePilha(&Pilha); printf("\nDigite o nome do item para ser empilhado:\n"); gets(x.nome); if (strcmp(x.nome) == 0) break; Empilha(x, &Pilha); }
}

void FazPilhaVazia(Tipo_Pilha *Pilha) { // a 'pilha' fica vazia portando criando uma celula cabeça Pilha->Topo = (ponteiro) malloc(sizeof(Celula)); Pilha->Topo->prox = NULL;
}

int PilhaVazia(Tipo_Pilha *Pilha) { // se a 'pilha' estiver vazia retorna 1 (true); senão retorna 0 (false) return(Pilha->Topo->prox == NULL);
}

void Empilha(Tipo_Item x, Tipo_Pilha *Pilha) { ponteiro p; p = (ponteiro) malloc(sizeof(Celula)); /* Coloca 'x' na antiga celula cabeça; cria nova célula cabeça. */ Pilha->Topo->Item = x; p->prox = Pilha->Topo; Pilha->Topo = p; // atualiza o topo da pilha
}

int Desempilha(Tipo_Pilha *Pilha, Tipo_Item *x) { if (PilhaVazia(Pilha)) return(0); /* Erro: Pilha vazia. */ else { ponteiro p; p = Pilha->Topo; Pilha->Topo = Pilha->Topo->prox; *x = Pilha->Topo->Item; // item retornado free(p); return(1); // Item retirado

Relacionados

  • TAD - Pilha - Programação c
    423 palavras | 2 páginas
  • Programação em C - Fila e Pilha
    321 palavras | 2 páginas
  • Linguagem funcional Cat
    3120 palavras | 13 páginas
  • Trabalho PAA
    2269 palavras | 10 páginas
  • Teste
    6785 palavras | 28 páginas
  • Filas e Pilhas
    938 palavras | 4 páginas
  • Linguagens de livre contexto e suas aplicações
    4279 palavras | 18 páginas
  • Pesquisa portfólio
    2276 palavras | 10 páginas
  • Hierarquia chomsky
    1550 palavras | 7 páginas
  • Livro Algoritmia E Estrutura De Dados
    4192 palavras | 17 páginas