Balanceamento de parênteses utilizando Pilha
Publicado por Andrey (última atualização em 21/06/2016)
[ Hits: 7.654 ]
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; }
CPU e memória em C no GNU/Linux
Sintetizador sonoro que toca redez vouz 4
Contagem de elementos de um array
Conhecendo atributos do Ncurses
Nenhum coment�rio foi encontrado.
Conciliando ZRAM Swap com Swap em arquivo ou partição
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
Dicas para encontrar games Indies diferentes e criativos
Proteja seu Linux Mint com o Timeshift: Restaure o sistema mesmo que ele não inicie!
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Ajuda com o Debian 13 - Video hibrido geforce 940 mx Wayland OFF (2)
Problema com impressoras de rede (1)
Rust é o "C da nossa geração"? (10)