Exemple #1
0
int main(){
    
    int i, remove;
    float aux;
    Pilha filha;
    
    inicializa_pilha(&filha, 5, sizeof(float));
    
    for(i=0;i<5;i++){
        scanf("%f", &aux);
        empilha(&filha, &aux);
    }
    mostra_pilha(filha, mostra_float);
    
    printf("\nRemover quantos elementos? (0 ate 5): ");
    scanf("%d", &remove);
    
    for(i=0;i<remove;i++)
        desempilha(&filha);
        
    mostra_pilha(filha, mostra_float);
    
    system("PAUSE");
    
}
Exemple #2
0
//Esta funcao eh responsavel pela leitura de um item a ser retirado da pilha
void ler(pilha *P, char &aux)
{
	char item;
	int achou=0, temp;
	pilha *L;

	inicializa_pilha(L);
	clrscr();
	mostra_pilha(P, L);
	printf("\nDigite o item a ser retirado: ");
	fflush(stdin);
	scanf("%c",&item);
	temp=L->topo;
	while(L->topo!=0)
	{ pop(&aux, L);
	  if(aux==item)
		achou=1;
	  if(achou==0)
		push(aux, P);
	  achou=0;
	}
//Se temp for igual a P->topo significa que o item nao foi retirado, ou seja,
//nao foi encontrado.
	if(temp==P->topo)
	{ printf("\nItem nao cadastrado");
	  getch();
	}
}
Exemple #3
0
static void parser(Memory* block, FILE* myfp, Lines* linhas) {
	int line = 1;
	int c;
	Stack *pilha = inicializa_pilha();
	while ((c = fgetc(myfp)) != EOF) {
		switch (c) {
			case 'r': { /* retorno */
					  int idx;
					  char var;
					  if (fscanf(myfp, "et %c%d", &var, &idx) != 2)
						  error("comando invalido", line);
					  if (var != '$')
						  checkVarP(var, idx, line);

					  //--//
					  gera(pilha, block, 'r', var, idx, 0, 0, 0, 0, 0, 0, line -1, linhas);

					  printf("ret %c%d\n", var, idx);
					  break;
				  }
			case 'i': { /* if */
					  int idx, n1, n2, n3;
					  char var;
					  if (fscanf(myfp, "f %c%d %d %d %d", &var, &idx, &n1, &n2, &n3) != 5)
						  error("comando invalido", line);
					  if (var != '$')
						  checkVar(var, idx, line);
					  linhas->gerouif = 1;
					  gera(pilha, block, 'i', 0, idx, 0, n1, 0, 0, n2, n3, line - 1, linhas);
					  printf("if %c%d %d %d %d\n", var, idx, n1, n2, n3);
					  break;
				  }
			case 'v': { /* atribuicao */
					  int idx0, idx1, idx2;
					  char var0 = c, var1, var2;
					  char op;
					  if (fscanf(myfp, "%d = %c%d %c %c%d", &idx0, &var1, &idx1, &op,
								  &var2, &idx2) != 6)
						  error("comando invalido", line);
					  checkVar(var0, idx0, line);
					  if (var1 != '$')
						  checkVarP(var1, idx1, line);
					  if (var2 != '$')
						  checkVarP(var2, idx2, line);
					  //--//
					  gera(pilha, block, 'v', var0, idx0, var1, idx1, op, var2, idx2, 0, line -1, linhas);
					  printf("%c%d = %c%d %c %c%d\n", var0, idx0, var1, idx1, op, var2,
							  idx2);
					  break;
				  }
			default:
				  error("comando desconhecido", line);
		}
		line++;
		fscanf(myfp, " ");
	}
}
Exemple #4
0
void main()
{
	char aux;
	pilha *P, *L;

	pilha pilha_real;
	P=&pilha_real;
	char vetor[]="abcdefghijlmnopqrst";
	int tam, i;
	inicializa_pilha(P);
	inicializa_pilha(L);
	tam=(int)sizeof(vetor)/sizeof(char);
	for(i=0; i<tam; i++)
	  push(vetor[i], P);
	ler(P, aux);
	mostra_pilha(P, L);
	getch();
}
Exemple #5
0
 void main(void)
{
  
	tipo_pilha  *pilha; /* criar por referencia
        para nao duplicar os dados.... */
	inicializa_pilha ( pilha );
	carrega_pilha ( pilha );
        mostra_pilha ( pilha );

  } /* fim do main */
/* percurso em pre-ordem recursiva */
void preordem(apontador n)
{
	pilha p;
	inicializa_pilha(p);
	while (!vazia(p))
		{
			n=pop(n);
			printf("%d\n", n->chave)
			if (n->dir != NULL)
				push(p, n->dir);
			if (n->esq != NULL)
				push(p,n->esq);
		}
}