Structures abstraite

bonjour avez vous une idee sur les differents moyens de supprimer un element a l'interieur d'une liste chainee? merci pour votre reponse

4 réponses

  1. Contributeur
    tu parles d'une liste simplement chaînée ou doublement chaînée ?
    1. Bonjour
      Il n'y a pas vraiment une idée ou différentes manières car le principe reste le même c'est dire revoir tous les pointeurs des cellules précédentes et suivantes pour les relier donc si tu veux supprimer une cellule dans ta liste chaînée tu dois prendre en compte les pointeurs précédents et le pointeur suivant de la cellule que tu veux supprimer à partir de là, libre à toi de trouver la façon la plus logique ou rapide de supprimer ta cellule exemple
      #include <stdio.h>
      #include <stdlib.h>
      
      //Structure liste 
      typedef struct s_List{
      
      	char *pChar;
      	struct s_List *pNext;
      	struct s_List *pPrev;
      }ts_List;
      
      
      
      int main ( void  ){
      	
      	//Liste déja suposer alouer et est une liste
      	ts_List *ptr_List;		//Liste chaînée
      	ts_List *ptr_Suprim;    //Celule a suprimer
      	
      	
      	//Exemple Cas de supression d'une cellule
      	if( ptr_Suprim->pPrev ){
      		ptr_Suprim->pPrev->pNext = ptr_Suprim->pNext;
      	}
      	else
      		//Ptr_Suprim etait la première cellule 
      		ptr_List = ptr_Suprim->next;
      	
      	if( ptr_Suprim->pNext ){
      		ptr_Suprim->pNext->pPrev = ptr_Suprim->pPrev;
      	}
      	
      	//Supression
      	free( ptr_Suprim->pChar );
      	free( ptr_Suprim );
      	
      	return ( EXIT_SUCCESS );
      }
      

      à bientôt
      1. Contributeur
        jhonbouda - 21 oct. 2014 à 21:45
        une liste simplement chainee


        Pour une liste simplement chaînée, tu dois :

        - trouver l'élément de la liste que tu veux supprimer (E) et noter vers quel élément suivant il pointe (E+1)
        - trouver l'élément précédant celui que tu veux supprimer (E-1), et faire pointer l'indication de l'élément suivant sur E+1

        ensuite, tu supprimes E de la mémoire, si tu n'en as plus l'usage.

        Dal