예제 #1
0
void liste_free(liste lsb,  void ( free_ele( void * ) )  )
{
	liste_element tmp_avant=lsb->prem;
	liste_element tmp; 

	if( tmp_avant != NULL )
	{
		tmp = lsb->prem->suiv; 

		while( tmp != NULL ) 
		{
			if( tmp_avant->ele != NULL )
			{
				free_ele(tmp_avant->ele); 
			}
			free(tmp_avant); 
			tmp_avant = tmp; 
			tmp = tmp->suiv; 
		}

		if( tmp_avant->ele != NULL )
		{
			free_ele(tmp_avant->ele); 
		}
		free(tmp_avant); 
	}

	free(lsb); 
}
예제 #2
0
void finish_process() {
  schedule();
  if (cur_proc) {
    fprintf(stdout, "%d ", cur_proc->val);
    free_ele(cur_proc);
    num_processes--;
  }
}
예제 #3
0
void liste_sup(liste lsb, void * sup, void (free_ele( void * ) ) )
{
	if ( lsb->prem == NULL )
	{
		return; 
	}

	liste_element tmp = lsb->prem; 
	liste_element tmp_avant = NULL; 

	if( tmp->ele == sup )
	{
		lsb->prem = tmp->suiv; 
		if( sup != NULL )
		{
			free_ele(sup); 
		}
		free(tmp); 
	}
	else
	{
		do 
		{
			tmp_avant = tmp; 
			tmp=tmp->suiv; 
		}
		while( tmp->ele!=sup ); 

		tmp_avant->suiv = tmp->suiv; 
		if( sup != NULL )
		{
			free(sup); 
		}
		free(tmp); 
	}
	
	lsb->nb_ele--; 
	return;
}