Buscar

Estrutura de dados, sequencia WcM

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include <stdio.h>
#include <Windows.h>
#define capacidade 10
struct pilha
{
 int topo;
 char elem[capacidade];
};
void criaPilha(struct pilha *P)
{
 P->topo = -1;
}
void liberarPilha(struct pilha *P)
{
 if(P->topo == -1)
 return pilhaVazia(P);
 else
 {
 free(P);
 P = NULL;
 }
}
int pilhaVazia(struct pilha *P)
{
 if (P->topo == -1)
 {
 printf("PILHA VAZIA\n");
 return -1;
 }
}
int pilhaCheia(struct pilha *P)
{
 if (P->topo == capacidade)
 {
 printf("PILHA CHEIA\n");
 return 1;
 }
}
void empilhaW(struct pilha *P, char valor)
{
 P->topo++;
 P->elem[P->topo] = valor;
 printf("\n### %c inserido na posicao %d da pilha W\n\n",valor, P->topo);
}
void empilhaM(struct pilha *P, char valor)
{
 P->topo++;
 P->elem[P->topo] = valor;
 printf("\n### %c inserido na posicao %d da pilha M\n\n",valor, P->topo);
}
void empilhar(struct pilha *P, char valor)
{
 P->topo++;
 P->elem[P->topo] = valor;
 printf("\n### %c inserido na posicao %d da pilha\n\n",valor, P->topo);
}
char desempilha(struct pilha *P)
{
 if( P == NULL)
 return pilhaVazia(P);
 else if(P->topo == -1)
 return pilhaVazia(P);
 else
 {
 char valorDesemp;
 valorDesemp = P->elem[P->topo];
 printf("Valor Desempilhado: %c\n",valorDesemp);
 P->topo--;
 return P->topo++;
 }
}
char obterTopo(struct pilha *P)
{
 if(pilhaVazia(P) == -1)
 {
 return -1;
 }
 else
 {
 char valorTopo;
 valorTopo = P->elem[P->topo];
 printf("Topo: %c\n",valorTopo);
 return valorTopo;
 }
}
void verificaWcM(struct pilha *PW,struct pilha *PM,struct pilha *Paux){
//struct pilha *pilhaAux;
//criaPilha(&pilhaAux);
char a = obterTopo(PM);
char b = desempilha(PW);
if (a == b){
 printf("São iguais");
}
else printf("Não");
//empilhar(&pilhaAux,z);
}
int main()
{
 char valorInseridoW,valorInseridoM;
 int escolha,topo;
struct pilha pilhaW;
struct pilha pilhaM;
struct pilha pilhaAux;
 criaPilha(&pilhaW);
 criaPilha(&pilhaAux);
 criaPilha(&pilhaM);
 do
 {
 printf("\t\t 1 -> EMPILHAR SEQUENCIA W \n \t\t 2- EMPILHAR SEQUENCIA M\n\n\t\t 3-OBTER TOPO W\n \t\t 4-OBTER TOPO M\n\t\t 5 - Comparar\n\n");
 scanf("%d", &escolha);
 switch(escolha)
 {
 case 1:
 printf("Insira um valor da sequencia W:\n");
 scanf("%s",&valorInseridoW);
 empilhaW(&pilhaW,valorInseridoW);
 break;
 case 2:
 printf("Insira um valor da sequencia W:\n");
 scanf("%s",&valorInseridoM);
 empilhaM(&pilhaM, valorInseridoM);
 break;
 case 3:
 obterTopo(&pilhaW);
 break;
 case 4:
 obterTopo(&pilhaM);
break;
 case 5:
 verificaWcM(&pilhaW,&pilhaM,&pilhaAux);
 break;
 }
 }
 while(escolha != -1);
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais