Structures abstraite

Fermé
jhonbouda Messages postés 25 Date d'inscription samedi 21 juin 2014 Statut Membre Dernière intervention 30 décembre 2014 - 20 oct. 2014 à 22:24
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 - 22 oct. 2014 à 03:00
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

[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
21 oct. 2014 à 11:22
tu parles d'une liste simplement chaînée ou doublement chaînée ?
0
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
21 oct. 2014 à 12:02
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
0
jhonbouda Messages postés 25 Date d'inscription samedi 21 juin 2014 Statut Membre Dernière intervention 30 décembre 2014 1
21 oct. 2014 à 21:45
une liste simplement chainee
0
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
22 oct. 2014 à 03:00
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
0