Please note, this is a STATIC archive of website www.tutorialspoint.com from 11 May 2019, cach3.com does not collect or store any user information, there is no "phishing" involved.
Tutorialspoint

Compile and Execute C Online

#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;
}














Advertisements
Loading...

We use cookies to provide and improve our services. By using our site, you consent to our Cookies Policy.