Je ne vois pas......
mansas87
Messages postés
25
Statut
Membre
-
mansas87 Messages postés 25 Statut Membre -
mansas87 Messages postés 25 Statut Membre -
Bonjour,
aidez moi SVP a voir ce qui ne va pas dans cette fonction.J'ai essayé d'ecrire une fonction qui permet d'inserer une valeur dans une liste chainée mais ça ne marche pas et je n'arrive pas à deceler l'erreur.
struct liste *inserer(struct liste * tet ,int k,int val)
//k represente la position à laquelle je veux faire l'inserssion et val la valeur que je veux inserer
{
struct liste *p=tet,*elt=0; int i=1;
while(i<k)
{ p=p->svt;i++}
elt=(struct liste*)malloc(sizeof(struct liste));
elt->a=val;
elt->svt=p;
p=elt;
return tet;
}
aidez moi SVP a voir ce qui ne va pas dans cette fonction.J'ai essayé d'ecrire une fonction qui permet d'inserer une valeur dans une liste chainée mais ça ne marche pas et je n'arrive pas à deceler l'erreur.
struct liste *inserer(struct liste * tet ,int k,int val)
//k represente la position à laquelle je veux faire l'inserssion et val la valeur que je veux inserer
{
struct liste *p=tet,*elt=0; int i=1;
while(i<k)
{ p=p->svt;i++}
elt=(struct liste*)malloc(sizeof(struct liste));
elt->a=val;
elt->svt=p;
p=elt;
return tet;
}
A voir également:
- Je ne vois pas......
- Je ne vois pas ma clé usb sur mon pc - Guide
- Je ne vois pas ma story snapchat - Forum Snapchat
- Je te vois en na'vi - Forum Loisirs / Divertissements
- Pourquoi je ne vois plus les commentaires sur facebook ✓ - Forum Facebook
- Pourquoi je ne vois plus les publications d'un ami facebook - Forum Facebook
5 réponses
Bonjour,
Les cas k=0 et k=1 sont identiques.
p=elt. Cette ligne n'a aucun effet. (Mise à jour d'une variable local juste avant de quitter)
return tet; Même si la tête a changé ?
M.
Les cas k=0 et k=1 sont identiques.
p=elt. Cette ligne n'a aucun effet. (Mise à jour d'une variable local juste avant de quitter)
return tet; Même si la tête a changé ?
M.
merci pour l'essai mais j'ai pas compris p=elt;n'a aucun effet.moi je pense que c'est un nouvel element qui est rajouté à la liste donc mais apres la fonction cet element sera en vie....si t'as d'autres explications j'attebds.merci ensore
p n'est pas un élément de la liste mais un pointeur supplémentaire qui référence un des éléments de la liste.
avec '*' un élément de la liste:
La liste n'a jamais été rompue, ton nouvel élément existe au delà et désigne par son suivant un des élément de la liste.
Si je ne me trompe pas :-S
Prends un bout de papier et dessine ta liste puis chaque opération, ça marche toujours ;-)
M.
avec '*' un élément de la liste:
après le while: **** ^ p à la fin de la fonction: **** ^ elt (élément alloué) ^ p (pointeur vers un élément) après la fonction: **** ^ elt (élément alloué)
La liste n'a jamais été rompue, ton nouvel élément existe au delà et désigne par son suivant un des élément de la liste.
Si je ne me trompe pas :-S
Prends un bout de papier et dessine ta liste puis chaque opération, ça marche toujours ;-)
M.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
E0->E1->E2->E3
^
p
On veut mettre un nouvel élément E entre E1 et E2. Dans le contexte de la fonction on dira entre p et son suivant car on ignore l'état de la liste, le seul élément connu est celui pointé par P.
Je mets là le principe.
- Créer E. (ok)
- Mettre sa valeur. (ok)
- Donner un suivant à E. (oui mais là tu vas bloquer l'étape d'après si tu prends celui là)
- Dire au précédent de notre suivant que E est son nouveau suivant. (non)
Une autre chose qui peut t'aider. Pour être un élément de la liste il faut que quelqu'un pointe sur nous et que l'on pointe sur quelqu'un. Je veux un réponse pour ces deux question.
1) Quelles sont les étapes pour intégrer E dans la liste ? (En raisonnant avec les Ei et non plus P)
2) Pour tous les Ei figurant dans ceux qui auront été utiles à ton raisonnement précédent, comment les désigner à l'aide de P ?
M.
(nan nan, le but c'est de comprendre)