Esempio n. 1
0
int insereNaPosicao(LDE *l, void *info, int pos)
{
    if(pos < 0)
        return ERRO_POSICAO_INVALIDA;
    if(pos == 0)
        return insereNoInicio(l, info);

    EleDuplo *aux = l->cabeca;
    int cont = 0;
    while(cont < pos-1 && aux->proximo != NULL)
    {
        aux = aux->proximo;
        cont++;
    }
    if(cont != pos-1)
        return ERRO_POSICAO_INVALIDA;

    EleDuplo *novo = aloca_elemento(l->tamInfo, info);
    if(novo == NULL)
        return 0; //Fracasso
    novo->anterior = aux;
    novo->proximo = aux->proximo;
    aux->proximo = novo;
    if(novo->proximo != NULL)
        novo->proximo->anterior = novo;
    return 1; //Sucesso
}
Esempio n. 2
0
int insereNoInicio(Lista *l, void *info)
{
	Elemento *p = aloca_elemento(l->tamInfo, info);
	p->proximo = l->cabeca;
	l->cabeca = p;
	return 1; //Sucesso
}
Esempio n. 3
0
int insereNoInicio(LDE *l, void *info)
{
    EleDuplo *p = aloca_elemento(l->tamInfo, info);
    if (p == NULL)
        return 0;
    p->proximo = l->cabeca;
    p->anterior = NULL;
    l->cabeca = p;
    if (p->proximo != NULL)
        p->proximo->anterior = p;
    return 1; //Sucesso
}
Esempio n. 4
0
int insereNoFim(LDE *l, void *info)
{
    if(l->cabeca == NULL)
        return insereNoInicio(l, info);

    EleDuplo *aux = l->cabeca;
    while(aux->proximo != NULL)
    {
        aux = aux->proximo;
    }

    EleDuplo *p = aloca_elemento(l->tamInfo, info);
    p->proximo = NULL;
    p->anterior = aux;
    aux->proximo = p;
    return 1; //Sucesso
}
Esempio n. 5
0
int insereNoFim(Lista *l, void *info)
{
	if(l->cabeca == NULL)
	{
		return insereNoInicio(l, info);
	}

	Elemento *aux = l->cabeca;
	while(aux->proximo != NULL)
	{
		aux = aux->proximo;
	}

	Elemento *p = aloca_elemento(l->tamInfo, info);
	p->proximo = NULL;
	aux->proximo = p;
	return 1; //Sucesso
}
Esempio n. 6
0
void inserir (fila_ordenada_t * fila, aviao_t * dado)
{
  pthread_mutex_lock (&fila->mutex);
  elemento_t *e = aloca_elemento (dado);
  if (fila->n_elementos == 0)
    {
      fila->primeiro = e;
      fila->ultimo = e;
    }
  else
    {
      if (dado->combustivel < 10)
	{
	  fila->primeiro->anterior = e;
	  e->proximo = fila->primeiro;
	  fila->primeiro = e;
	}
      else
	{
	  if (dado->id < fila->ultimo->dado->id)
	    {
	      elemento_t *a = fila->primeiro;
	      while (a->dado->combustivel < 10)
		{
		  a = a->proximo;
		}
	      elemento->proximo = a->proximo;
	      elemento->anterior = a;
	      a->proximo->anterior = elemento;
	      a->proximo = elemento;
	    }
	  else
	    {
	      fila->ultimo->proximo = elemento;
	      elemento->anterior = fila->ultimo;
	      fila->ultimo = elemento;
	    }
	}
    }
  fila->n_elementos++;
  pthread_mutex_unlock (&fila->mutex);
}