Balanceamento de parênteses utilizando Pilha
Publicado por Andrey (última atualização em 21/06/2016)
[ Hits: 7.653 ]
Homepage: https://github.com/andreycdias
Download balancing parenthesis_stack.c
Simples código que utiliza da estrutura de dados pilha, para verificar uma expressão e retornar se é ou não balanceada.
Outros códigos meus: https://github.com/andreycadima/C
/* simple code that verify if the expression is balanced or not; -works only for parenthesis- data struct used : stack; andrey cadima 2016 */ #include <stdio.h> #include <stdlib.h> #include <ctype.h> typedef struct nodestack{ char data; struct nodestack*next; }nodes; typedef struct nodestack*stack; stack*create(){ stack*S = (stack*)malloc(sizeof(stack)); if(!S){ printf ("\n memory not available;\n"); exit(1); }else{ *S = NULL; return S; } } int empty(stack*S){ if(S==NULL) return 1; if(*S==NULL) return 1; else return 0; } nodes* allocate(char exp){ nodes*no = (nodes*)malloc(sizeof(nodes)); if(!no) exit(1); else{ no->data = exp; no->next = NULL; return no; } } void push (stack*S, char exp){ nodes*no = allocate(exp); nodes*tmp = *S; *S = no; no->next = tmp; } void pop (stack*S){ nodes*tmp = *S; *S = tmp->next; } void release(stack*S){ if(empty(S)) return ; else{ nodes*next_node, *cur_node; cur_node = *S; while(cur_node!=NULL){ next_node = cur_node->next; free(cur_node); cur_node = next_node; } } *S = NULL; } void expression(stack*S){ int i; char exp[50]; loop: printf ("\nexpression: "); scanf ("%s", exp); //for(i=0;i<'\0';i++){ for(i=0;i<strlen(exp);i++){ if(exp[i]=='(') push (S, exp[i]); if(exp[i]==')'){ if(empty(S)) goto label; else pop (S); } } if(empty(S)) printf ("\n balanced expression;\n"); else label: printf ("\n unbalanced expression;\n"); char opt; printf ("\ndo again? y/n: "); scanf ("%s", &opt); fflush(stdin); if(tolower(opt)=='y'){ if(!empty(S)) release(S); goto loop; }else exit(1); } int main (void){ stack*S = create(); expression(S); return 0; }
Regra de Horner para cálculo do polinômio
Super Thiagout (Breakout) - O Jogo
Nenhum coment�rio foi encontrado.
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Dica para encontrar diversos jogos Indies criativos
Instalando Discord no Debian 13
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Software livre - será que eu estou tão errado assim? (16)
A escola é altamente ineficiente e ineficaz! (12)