コード例 #1
0
ファイル: bem_formada.c プロジェクト: ajholanda/edu-alg
int main()
{
  char seq[TAM_BUF];
  int n, i, c;
  Pilha *pil;

  pil = pilha_cria();

  printf("Nao insira espacos para a sequencia a seguir!\n");
  printf("Entre com a sequencia de parenteses e chaves: ");
  n = scanf("%s", seq);
  if (n == 0) {
    printf("A sequencia esta vazia!\n");
    goto saida;
  } else {
    for (i = 0; seq[i] != '\0'; i++) {
      switch(seq[i]) {
      case '(':
	pilha_push(pil, '(');
	break;
      case '{':
	pilha_push(pil, '{');
	break;
      case ')':
	if (pilha_vazia(pil))
	  goto mal_formada;

	c = pilha_pop(pil);
	if (c != '(')
	  goto mal_formada;
	break;
      case '}':
	if (pilha_vazia(pil))
	  goto mal_formada;

	c = pilha_pop(pil);
	if (c != '{')
	  goto mal_formada;
	break;
      default:
	printf("Erro, caracter invalido: %c\n", seq[i]);
	goto saida;
	break;
      }
    }
  }

  if (pilha_vazia(pil)) {
    printf("A sequencia eh bem-formada!\n");
    goto saida;
  }
  
 mal_formada:
  printf("A sequencia eh mal-formada!\n");

 saida:
  pilha_libera(pil);
  return 0;
}
コード例 #2
0
ファイル: prob1.c プロジェクト: FEUP-MIEEC/Prog2
int pilha_remove(pilha *p, const char* string)
{	
	/* problema 1.2 - a implementar */
	int tamanho = p->tamanho, i;
	pilha *paux = pilha_nova();
	while(p->tamanho!=0){
		pilha_push(paux, pilha_top(p));
		pilha_pop(p);
	}
	while(paux->tamanho!=0){
		if(strcmp(pilha_top(paux), string)!=0) pilha_push(p, pilha_top(paux));
		pilha_pop(paux);
	}
	return 1;
}
コード例 #3
0
ファイル: prob1.c プロジェクト: FEUP-MIEEC/Prog2
pilha* fila_transforma(fila *f)
{
	/* problema 1.1 - a implementar */
	int i=0;
	pilha *paux = pilha_nova();
	pilha *p = pilha_nova();
	while(fila_comprimento(f)!=0){
		pilha_push(paux, fila_front(f));
		fila_pop(f);
		i++;
	}
	while(p->tamanho!=i){
		pilha_push(p, pilha_top(paux));
		pilha_pop(paux);
	}
	return p;
}
コード例 #4
0
ファイル: main.c プロジェクト: andrepitombeira/algorithms
Pilha* embarque(int n){ 
   int i;   
   Pilha* p = getpilha();   
   for(i = 0; i <n; i++){  
      Mala* m = cadastra_mala();     
      pilha_push(p,m);
   }     
   printf("\nEmbarque Realizado com Sucesso!\n"); 
   return p;   
}
コード例 #5
0
ファイル: prob1.c プロジェクト: FEUP-MIEEC/Prog2
/* teste problema 1.2 */
void teste_12()
{
	pilha *p;

	p = pilha_nova();
	pilha_push(p, "P4");
	pilha_push(p, "P3");
	pilha_push(p, "P1");
	pilha_push(p, "P3");
	pilha_push(p, "P2");
	pilha_push(p, "P1");
	
	printf("Antes de pilha_remove: ");
	imprime_pilha(p);

	pilha_remove(p, "P1");

	printf("Depois de pilha_remove: ");
	imprime_pilha(p);

	pilha_remove(p, "P3");

	printf("Depois de pilha_remove: ");
	imprime_pilha(p);

	pilha_apaga(p);
}
コード例 #6
0
int main(){
    
    Pilha* p=NULL;
    int op;
    char resp;
    float valor;
    
    do{
        system("cls");
        printf("==PILHAS VETORIAIS >> FELIPE==\n\n");
        printf("Escolha uma opcao:\n");
        printf("1 - Cria a pilha\n");
        printf("2 - Testa se a pilha esta vazia\n");
        printf("3 - Adiciona um elemento a pilha\n");
        printf("4 - Retira um elemento da pilha\n");
        printf("5 - Exibe a pilha\n");
        printf("6 - SAIR [X]\n\n");
        printf("Escolha: ");
        scanf("%d",&op);
        switch(op){
            case 1:
                p=pilha_cria();
                printf("Pilha criada no endereco %p",p);
                break;
            case 2:
                if(pilha_vazia(p)){
                   printf("A pilha esta VAZIA");
                }
                else{
                    printf("A pilha NAO ESTA VAZIA");
                }
                break;
            case 3:
                printf("Digite um valor real:"); 
                scanf("%f",&valor);
                pilha_push(p,valor);
                break;
            case 4:
                pilha_pop(p);
                break;
            case 5:
                pilha_imprime(p);
                break;
            case 6:
                exit(1);
        }
        printf("\n\nDeseja continuar? (s/n) :");
        scanf("%s",&resp);
    }while(resp=='s');
    getch();
}
コード例 #7
0
ファイル: 02-pilhas.c プロジェクト: giogaruffi/MC202
/* Funcao de abertura de uma nova Matrioshka */
int MatrioshkasPush(Pilha *matrioshka, int valor){

	/* Caso nao seja o fim da pilha ou o módulo da externa menor que o da interna,
	 * Matrioshka invalida */
	if(matrioshka->prox != NULL && valor < matrioshka->prox->tamanho){
		return 0;
	}
	/* Entra na pilha */
	pilha_push(matrioshka, valor);
	/* Caso nao seja a penultima */
	if(matrioshka->prox->prox != NULL){
		/* Soma o tamanho das Matrioshkas internas */
		matrioshka->prox->prox->contador += matrioshka->prox->tamanho;
		/* Soma das internas eh maior ou igual o tamanho da externa,
		 * Matrioshka invalida */
		if(matrioshka->prox->prox->contador <= matrioshka->prox->prox->tamanho){
			return 0;
		}
	}
	/* Processo realizado sem cair nos casos invalidos */
	return 1;
}