Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- //IN TRUTH IT'S IN C WITH JUST A FEW COMMANDS IN C++ ;P ~BY DIMASDARK 'N' BELLY~ HUEHUEHUE BR
- typedef struct pilha
- {
- char c;
- struct pilha *proximo;
- } Pilha;
- Pilha *novaPilha()
- {
- return NULL;
- }
- int pilhaVazia(Pilha *p)
- {
- if (p == NULL)
- return -1;
- else
- return 0;
- }
- Pilha *topo(Pilha *p)
- {
- return p;
- }
- Pilha *desempilhar(Pilha *p)
- {
- Pilha *aux = p -> proximo;
- delete(p);
- p = aux;
- return p;
- }
- Pilha *empilhar(Pilha *p, char c)
- {
- Pilha *novo = new Pilha();
- novo -> c = c;
- novo -> proximo = p;
- p = novo;
- return p;
- }
- int main()
- {
- int contador;
- int teste;
- int tamanho;
- scanf("%d", &contador);
- getchar();
- while (contador > 0)
- {
- int contador_recipiente = 0;
- char entrada[128];
- gets(entrada);
- tamanho = strlen(entrada);
- Pilha *p;
- p = novaPilha();
- if (entrada[0] == '\0')
- teste = 0;
- else
- {
- for (int i = 0; i < tamanho; i++)
- {
- if (entrada[i] == '(' || entrada[i] == '[')
- {
- p = empilhar(p, entrada[i]);
- contador_recipiente++;
- }
- else
- {
- teste = pilhaVazia(p);
- if (teste != -1) //Não é vazia
- {
- if(entrada[i] == ')' && p->c == '(')
- {
- p = desempilhar(p);
- contador_recipiente--;
- }
- else if (entrada[i] == ']' && p->c == '[')
- {
- p = desempilhar(p);
- contador_recipiente--;
- }
- }
- else
- {
- contador_recipiente--;
- break;
- }
- }
- }
- }
- teste = pilhaVazia(p);
- if (entrada[0] == ')' || entrada[0] == ']')
- teste = 0;
- if ( (teste == -1 && entrada[0] != ')') || (teste == -1 && entrada[0] != ']'))
- {
- if (contador_recipiente == 0)
- {
- printf("Yes\n");
- strcpy(entrada, "");
- }
- else
- {
- printf("No\n");
- strcpy(entrada, "");
- }
- }
- else
- {
- printf("No\n");
- strcpy(entrada, "");
- }
- contador--;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement