/* Programa que implementa o Tipo Abstrato de Dados Pilha com alocacao dinamica * Objetivo: utilizar a pilha como um tipo abstrato de dados para simular o comportamento recursivo do quicksort * Observacoes: o tipo bool estah definido em utils.h e consiste em um int para representar valores booleanos * * Autores: Bruno Freitas Tissei e Felipe Shi Iu Wu * Disciplina: Algoritmos e Estrutura de Dados II * Entrega: 13/12/2015 */ #include "pilha.h" // inicia a pilha void inicPilha(tipoPilha *pilha) { pilha->tamanho = 0; pilha->topo = (nodoPilha*) malloc(sizeof(nodoPilha)); pilha->topo->frente = NULL; } // verifica se a pilha estah vazia (vazia -> true) bool vaziaPilha(tipoPilha pilha) { return !pilha.tamanho; } // adiciona um elemento ao topo, eh necessario fornecer a "esquerda" e a "direita" void push(tipoPilha *pilha, int esq, int dir) { nodoPilha *aux; aux = (nodoPilha*) malloc(sizeof(nodoPilha)); aux->frente = pilha->topo; pilha->topo->esq = esq; pilha->topo->dir = dir; pilha->topo = aux; pilha->tamanho++; } // se nao estiver vazia remove o elemento do topo da pilha void pop(tipoPilha *pilha) { nodoPilha *aux; if (!vaziaPilha(*pilha)) { aux = pilha->topo; pilha->topo = aux->frente; free(aux); pilha->tamanho--; //return *(pilha->topo); } }