Baixe o app para aproveitar ainda mais
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); }
Compartilhar