#include <stdio.h> #include <stdlib.h> #define max 100 struct pilha { int FL; int dados[max]; }; typedef struct pilha Pilha; Pilha *Cria_pilha(void) { Pilha *pt = (Pilha *) malloc(sizeof(Pilha)); if (pt != NULL) pt->FL = 0; return pt; } Pilha *Libera_pilha(Pilha *Ptl) { free(Ptl); //Debug printf("Liberando pilha da memoria\n"); return NULL; } Pilha*Insere_elem(Pilha *Ptl, int elem) { if (Ptl == NULL || Ptl->FL == max){ printf("Nao foi possivel inserir elemento, Pilha cheia !!!!\n"); return Ptl; } // insere elemento no final da lista Ptl->dados[Ptl->FL] = elem; Ptl->FL++; return Ptl; } int Tamanho_pilha(Pilha *Ptl) { if (Ptl == NULL) return -1; else return Ptl->FL; } Pilha *Remove_elem_mov(Pilha *Ptl, int elem) { int i, k; if (Ptl == NULL || Ptl->FL == 0) return Ptl; // procura elemento na lista i = 0; while (i < Ptl->FL && Ptl->dados[i] != elem) i++; if (i == Ptl->FL) // elemento nao encontrado return Ptl; //elemento encontrado na posiçao i. Remover elemento // com movimentaçao de dados for (k = i; k < Ptl->FL - 1; k++) Ptl->dados[k] = Ptl->dados[k + 1]; // atualiza fim de lista Ptl->FL--; return Ptl; } int Consulta_nodo(Pilha *Ptl, int pos, int *info) { if (pos <= 0 || pos > Ptl->FL) return 0; *info = Ptl->dados[pos - 1]; return 1; } int E_cheia(Pilha *Ptl) { if (Ptl->FL == max) return 1; else return 0; } int E_vazia(Pilha *Ptl) { if (Ptl->FL == 0){ //Codigo para debub printf("Lista Vazia\n"); return 1; } else{ //Codigo para debug printf("Lista contem elementos\n"); return 0; } } int Imprime_pilha(Pilha *Ptl){ int elemento; int tamanho = Tamanho_pilha(Ptl); printf("\n*** IMPRIMINDO ELEMENTOS DA PILHA ***\n"); for(int i=1; i<=tamanho;i++){ Consulta_nodo(Ptl, i, &elemento); printf("%d - %d\n", i, elemento); } } int main() { int k; Pilha* minhapilha; minhapilha = Cria_pilha(); //Libera_lista(minhaLista); int vazia = E_vazia(minhapilha); for(k=0;k<=10;k++){ Insere_elem(minhapilha, k); } printf("inserção de elementos \n"); } int vazia2 = E_vazia(minhapilha); //int tamanho = Tamanho_pilha(minhapilha); //printf("Tamanho da pilha = %d\n", tamanho); // int elemento; /* for(int i=1; i<=tamanho;i++){ Consulta_nodo(minhapilha, i, &elemento); printf("elemento da pilha = %d\n", elemento); } //Imprime_pilha(minhapilha); for(int v=0; v<=50;v++) { Remove_elem_mov(minhapilha, v); } for(int i=1; i<=tamanho;i++){ Consulta_nodo(minhapilha, i, &elemento); printf("elemento da pilha = %d\n", elemento); } printf("Tamanho da pilha = %d\n", tamanho); */ return 0; }
We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy. Accept Learn more