Ejemplo n.º 1
0
int	fila_push(fila *f, const char *string)
{
	filaItem *novo, *ult = f->cauda;

	if(f == NULL || string == NULL)
		return FILA_ERRO;

	if (fila_cheia(f))
		return FILA_CHEIA;

	novo = (filaItem *) malloc(sizeof(filaItem));
	if(novo == NULL)
		return FILA_ERRO;

	novo->string = (char*) calloc(strlen(string)+1, sizeof(char));
	if(novo->string == NULL)
	{
		free(novo);
		return FILA_ERRO;
	}

	strcpy(novo->string, string);
	novo->proximo = NULL;

	if (ult == NULL)
		f->cabeca = f->cauda = novo;
	else
	{
		f->cauda->proximo = novo;
		f->cauda = novo;
	}

	return FILA_OK;
}
Ejemplo n.º 2
0
void chegada (char x, fila *f)
{
 char aux;
 if (fila_cheia(f)) /* ou if (f->tam >= TAM_BUFFER)*/
	  {partida ( &aux ,f);
		printf("\n Buffer estava cheio => ocorreu uma partida de:: %c ", aux);
	  }
	/* apos a partida... ha uma nova entrada */
	printf("\n O lugar vago no Buffer foi ocupado por:: %c ", x );
	f-> tam = ( ( f -> tam) + 1 );
	f-> rear  =( ( f->rear) + 1 ) % MAX_VETOR;
	f-> entradas [f->rear] = x ;
	return;
}
Ejemplo n.º 3
0
Archivo: largura.c Proyecto: privati/ED
void inserir_fila(Fila *p, Arv *v)
{

    if(fila_cheia(p)==0)
    {
        int fim = (p->ini+p->qtde)%MAX;
        p->v[fim] = v;
        p->qtde++;
    }
    else
    {
        printf("\nFila Cheia!\n");
    }
}
int inserir(Fila *f, void *info, float (*compara_info)(void*,void*)) 
{
    if(fila_cheia(*f))
        return ERRO_FILA_CHEIA;
    int atual = f->fim;
    int anterior = ant(atual, f->capacidade);
    int cont = 0;
    while (cont < f->num_ele && compara_info(f->dados[anterior],info)) 
    {
        f->dados[atual] = f->dados[anterior];
        atual = anterior;
        anterior = ant(atual, f->capacidade);
        cont++;
    }
    f->dados[atual] = malloc (f->tamInfo);
    memcpy(f->dados[atual], info, f->tamInfo);
    f->fim++;
    f->num_ele++;
    if (f->fim == f->capacidade)
        f->fim = 0;
    return 0;
}