Supprimer element liste chaine C
nounou_89
Messages postés
56
Statut
Membre
-
nounou_89 Messages postés 56 Statut Membre -
nounou_89 Messages postés 56 Statut Membre -
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 page word - Guide
- Supprimer pub youtube - Accueil - Streaming
- Chaine tnt gratuite sur mobile - Guide
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