Buscar

EXERCICIO EM C, ESTRUTURA DE DADOS, AJUDEEM

4- Desenvolva uma função para testar se duas pilhas P1 e P2 são iguais.

💡 4 Respostas

User badge image

Renan Lucilio

náo sei

0
Dislike0
User badge image

Horlan Vicenssotti

#include

#include

#include "Pilha.h"


int main ()

{


  // As operações abaixo exemplificam a utilização de uma Pilha


  TipoPilha *Topo1;

  TipoInfo dado;


  Topo1 = InicializaPilha(Topo1);


  Topo1 = PushPilha(Topo1,2);

  Topo1 = PushPilha(Topo1,4);

  Topo1 = PushPilha(Topo1,6);

  Topo1 = PushPilha(Topo1,8);

  Topo1 = PushPilha(Topo1,10);


  ImprimirPilha(Topo1);


  Topo1 = PopPilha(Topo1, &dado);

  printf("elemento %d retirado da pilha\n\n",dado);


  Topo1 = PopPilha(Topo1, &dado);

  printf("elemento %d retirado da pilha\n\n",dado);


  if (Vazia(Topo1))

   printf("a pilha esta vazia\n\n");

  else

    printf("a pilha não esta vazia\n\n");


  Topo1 = PopPilha(Topo1, &dado);

  printf("elemento %d retirado da pilha\n\n",dado);


  Topo1 = PopPilha(Topo1, &dado);

  printf("elemento %d retirado da pilha\n\n",dado);


  Topo1 = PopPilha(Topo1, &dado);

  printf("elemento %d retirado da pilha\n\n",dado);


  if (Vazia(Topo1))

   printf("a pilha esta vazia\n\n");

  else

    printf("a pilha não esta vazia\n\n");


  system("pause");

}

Pilha.c;

#include

#include

#include "Pilha.h"


TipoPilha* InicializaPilha (TipoPilha *Topo)

{

  return NULL;

}


int Vazia (TipoPilha *Topo)

{

  if (Topo==NULL)

    return 1;

  else

    return 0;

}


void ImprimirPilha (TipoPilha *Topo)

{

   TipoPilha *ptaux;


   if (Topo != NULL)

   {

    puts("---Imprimindo pilha---");

    for (ptaux=Topo; ptaux!=NULL; ptaux=ptaux->elo)

      printf("%d\n",ptaux->dado);

    puts("-------Fim pilha------");

   }

   else

    puts("Pilha vazia");


}


TipoPilha* PushPilha (TipoPilha *Topo, TipoInfo Dado)

{

    TipoPilha *novo; //novo elemento


    /*aloca um novo nodo */

    novo = (TipoPilha*) malloc(sizeof(TipoPilha));

    novo->elo = NULL;


    /*insere a informação no novo nodo*/

    novo->dado = Dado;


    /*encaeia o elemento*/

    novo->elo = Topo;

    Topo = novo;

    return Topo;

}


TipoPilha* PopPilha (TipoPilha *Topo, TipoInfo *Dado)

{

  TipoPilha* ptaux;


  if (Topo == NULL)

   return NULL;  //não tem nada na pilha

  else

  {

    *Dado = (Topo)->dado;   //devolve o valor do topo

    ptaux = Topo;     //guarda o endereço do topo

    Topo = (Topo)->elo;   //o próximo passa a ser o topo

    free(ptaux);      //libera o que estava no topo

    ptaux=NULL;

    return Topo;      //retorna novo topo

  }

}


TipoInfo ConsultaPilha (TipoPilha *Topo)

{

 if (Topo==NULL)

  return 0;

 else

  return Topo->dado;


}


TipoPilha* DestroiPilha (TipoPilha *Topo)

{

    TipoPilha *ptaux;

    while (Topo != NULL)

    {

     ptaux = Topo;     //guarda o endereço do topo

     Topo = Topo->elo;   //o próximo passa a ser o topo

     free(ptaux);      //libera o que estava no topo

    }

    return NULL;

}

Pilha.h:

#include

#include


typedef int TipoInfo;


struct TPtPilha

{

    TipoInfo dado;

    struct TPtPilha *elo;

};

typedef struct TPtPilha TipoPilha;


TipoPilha* InicializaPilha (TipoPilha *Topo);

int Vazia (TipoPilha *Topo);

TipoPilha* PushPilha (TipoPilha *Topo, TipoInfo Dado);

TipoPilha* PopPilha (TipoPilha *Topo, TipoInfo *Dado);

TipoInfo ConsultaPilha (TipoPilha *Topo);

TipoPilha* DestroiPilha (TipoPilha *Topo);

void ImprimirPilha (TipoPilha *Topo);

0
Dislike0
User badge image

Gustavo Machado Concolato

#include

#include

#include "Pilha.h"


int main ()

{


  // As operações abaixo exemplificam a utilização de uma Pilha


  TipoPilha *Topo1;

  TipoInfo dado;


  Topo1 = InicializaPilha(Topo1);

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais