Supprimer element liste chaine C
nounou_89
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
-
nounou_89 Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
nounou_89 Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je voudrais savoir comment supprimer un element d'une liste chainée je sais l'ecrire avec une position mais pas sans c vraiment urgent
voila le code que j'ai ecri:
int supp_dans_liste (Liste * liste, int pos){
if (liste->taille <= 1 || pos < 1 || pos >= liste->taille)
return -1;
int i;
Element *courant;
Element *supp_element;
courant = liste->debut;
for (i = 1; i < pos; ++i)
courant = courant->suivant;
supp_element = courant->suivant;
courant->suivant = courant->suivant->suivant;
if(courant->suivant == NULL)
liste->fin = courant;
free (supp_element->donnee);
free (supp_element);
liste->taille--;
return 0;
}
je voudrais savoir comment supprimer un element d'une liste chainée je sais l'ecrire avec une position mais pas sans c vraiment urgent
voila le code que j'ai ecri:
int supp_dans_liste (Liste * liste, int pos){
if (liste->taille <= 1 || pos < 1 || pos >= liste->taille)
return -1;
int i;
Element *courant;
Element *supp_element;
courant = liste->debut;
for (i = 1; i < pos; ++i)
courant = courant->suivant;
supp_element = courant->suivant;
courant->suivant = courant->suivant->suivant;
if(courant->suivant == NULL)
liste->fin = courant;
free (supp_element->donnee);
free (supp_element);
liste->taille--;
return 0;
}
A voir également:
- Supprimer element liste chaine C
- Supprimer rond bleu whatsapp - Guide
- Liste déroulante excel - Guide
- Supprimer une page word - Guide
- Chaine tnt gratuite sur mobile - Guide
- Supprimer pub youtube - Accueil - Streaming
5 réponses
je ne comprends pas ta question. Essai d'être plus clair sur ce que tu veux faire.
Le code écrit me semble bon...
Le code écrit me semble bon...
en fait je voudrai ecrire une fonction qui me supprime un element passé en parametre de la liste chainé sans utilisé in pos
je l'ai modifier mais je ne sai pas s'il fonctionne
/* Supprimer une station */
int supprime_station(station_t* s){
liste_pStations_t* stations;
liste_pStations_t* precedent = NULL;
if(rechercher_station(s->nom) != NULL){
for(stations = toutes_les_stations ; stations != NULL ; stations=stations->next){
if (strcmp(stations->s->nom,nom) == 0){
if(precedent == NULL)
toutes_les_stations = stations->next;
else
precedent->suivant = stations->next;
free(stations);
break;
}
precedent = encourt;
}
}
/* Supprimer une station */
int supprime_station(station_t* s){
liste_pStations_t* stations;
liste_pStations_t* precedent = NULL;
if(rechercher_station(s->nom) != NULL){
for(stations = toutes_les_stations ; stations != NULL ; stations=stations->next){
if (strcmp(stations->s->nom,nom) == 0){
if(precedent == NULL)
toutes_les_stations = stations->next;
else
precedent->suivant = stations->next;
free(stations);
break;
}
precedent = encourt;
}
}
Je pense que ça doit fonctioné. à ta place je serais repartie du code précédent.
nt supp_dans_liste (Liste * liste, const char* nom){ if (liste->taille <= 1 || pos < 1 || pos >= liste->taille) return -1; int i; Element *courant; Element *supp_element; for (courant = liste->debut;courant->suivant!=0; courant = courant->suivant) if(strcmp(courant->suivant->nom,nom)==0) break; if(strcmp(courant->suivant->nom,nom)!=0) return -1; supp_element = courant->suivant; courant->suivant = courant->suivant->suivant; if(courant->suivant == NULL) liste->fin = courant; free (supp_element->donnee); free (supp_element); liste->taille--; return 0; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question