Exercice sur les listes chaînées (aidez-moi)

burnit4mosta Messages postés 12 Statut Membre -  
 Ali -
Bonjour,
Je suis débutant en programmation (étudiant en informatique), alors j'ai un exercice sur les listes chaînées
et voila l'énoncé:
- Soit F le pointeur de tête d'une liste chaînée. Ecrire une fonction qui supprime tous les noeuds d'ordre impair (c-à-d, le premier, le troisième, le cinquième et ainsi de suite).

et voila ma solution :

#include <stdio.h>
#include <stdlib.h>

typedef struct Node;
typedef struct Node *PtrNode;

struct Node{
PtrNode next;
}Node;

PtrNode Impair(PtrNode F)
{
PtrNode P,R;
if (F == NULL) return F;
P = F;
F = F -> next;
free (P);
P = F;
while (P -> next != NULL)
{
R = P -> next;
P -> next = R -> next;
free (R);
P= P -> next;
} //while
return F;
} //Fonction Impair

alors dites moi est ce que c'est exacte ou pas !! et Merci

2 réponses

burnit4mosta Messages postés 12 Statut Membre 1
 
Je veux une réponse S'il vous plait
1
Ali
 
On constate tout d'abord que vous n'avez pas indiqué le champs de l'information ainsi que son type (la liste est constitué de quoi?)
Soit Info le nom du champs d'information et TypeInfo le type de l'information
Voici votre programme affecté de quelques modifications
#include <stdio.h>
#include <stdlib.h>

typedef struct Node{
TypeInfo Info;
Type_Node *next;
} Type_Node;
typedef Type_Node *PtrNode;

PtrNode Impair(PtrNode F)
{
PtrNode P,R;
if (F == NULL) return F;
P = F;
F = F -> next;
free (P);
P = F;
while (P -> next != NULL)
{
R = P -> next;
P -> next = R -> next;
free (R);
P= P -> next;
} //while
return F;
} //Fonction Impair
0