Baixe o app para aproveitar ainda mais
Prévia do material em texto
Exemplo de implementação do tipo abstrato de dados PILHA: #include <stdio.h> #define TRUE 1 #define FALSE 0 typedef struct no { int info; struct no * prox; } TNo; typedef TNo * Stack; int isEmpty (Stack p) { // teste se a pilha está vazia if (p == NULL) return TRUE; else return FALSE; } void push (Stack * p, int n) { // empilhar um valor, ou seja, insere no topo da pilha TNo * novo; novo = (TNo *) malloc (sizeof (TNo)); novo->info = n; if (isEmpty (*p) == TRUE) novo->prox = NULL; else novo->prox = *p; *p = novo; } int pop (Stack * p) { // desempilha, ou seja, retira o valor situado no topo da pilha int n; TNo * aux; aux = *p; *p = (*p)->prox; n = aux->info; free (aux); return n; } int top (Stack p) { return p->info; } void initialize (Stack *p) { *p = NULL; } � int main () { Stack minhaPilha; int valor; char op; initialize (&minhaPilha); do { printf ("1 - Empilhar \n2 - Desempilhar \n3 - Ver topo \n4 - Sair \nDigite a opcao: "); op = getchar (); fflush (stdin); switch (op) { case '1': printf ("Informe o valor: "); scanf ("%i",&valor); fflush (stdin); push (&minhaPilha, valor); break; case '2': if (isEmpty (minhaPilha) == TRUE) printf ("Pilha vazia \n"); else { valor = pop (&minhaPilha); printf ("Valor desempilhado: %i\n", valor); } break; case '3': if (isEmpty (minhaPilha) == TRUE) printf ("Pilha vazia \n"); else printf ("Valor no topo da pilha: %i\n", top(minhaPilha)); break; case '4': while (isEmpty (minhaPilha) == FALSE) pop (&minhaPilha); break; default: printf ("Opcao invalida \n"); } } while (op != '4'); return 0; }
Compartilhar