Salut tous,
Eh bien je risque de poser quelques questions bien stupides (trop stupides en effet !), mais comme il le faut pour apprendre, allons-y, j'espère que vous serez nombreux à m'aider
Bon je dois réaliser une liste chainée dont les éléments sont les suivant :
je veux en premier lieu créer une fonction qui fait l'ajout trié, c'est à dire : ajoute exactement dans la position où le nouvel élément dois être insérer, moi je fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 typedef struct Element Element; struct Element { char cin[10]; char *nom; int age; struct Element *suivant; };
que le compilateur ne trouve pas très joli toutefois ! J'imagine qu'il a raison (bon j'ai pas encore fait le test sur une liste, mais lorsque j'ai compilé ça a indiqué beaucoup d'erreur de syntaxe que j'arrive pas à relever )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 void ajoutrie(Element **liste, Element e) { // cas special pour la tête de la liste "liste" if (liste == NULL || liste->cin >= e->cin) { e->suivant = suivant; liste = e; } else { // localiser l'Element précedent au lieu d'insertion Element* p = liste; while (p->suivant!=NULL && p->suivant->cin < e.cin) { p = p->suivant; } e->suivant = p->suivant; p->suivant = e; } }
autre fonction que je veux réaliser est l'affichage et je fais :
j'imagine quand même que celle là je l'ai correcte, non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void afficher(Element **liste) { Element *p = liste;//ce pointeur nous servira pour parcourire la liste while(p!=NULL) { printf("%s :\n",p.cin); printf("%s :\n",p.nom); printf("%d :\n",p.age); p=p.suivant;//de quoi avancer une case };
Bon y a trois autres fonctions, mais on en discutera une fois j'aurai essayé, voilà, merci à tous
Partager