Bonjour,
Je veux réaliser une liste itérative en C (je débute en C). Voici la structure LISTE:
Voici maintenant l'interface des fonctions qui traitent une LISTE:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 /* Type LISTE*/ typedef struct { int capacite; int rang; char* tableau; } LISTE;
Ma première question concerne la fonction creer:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 /* Interface */ LISTE creer(int); void detruire(LISTE*); int nbElements(LISTE); int capacite(LISTE); short estVide(LISTE); short estPleine(LISTE); char* consulter(LISTE,int); int supprimer(LISTE,int); int supprimerPremier(LISTE,char*); int supprimerTous(LISTE,char); int modifier(LISTE,int,char*); int insererFin(LISTE,char*); int inserer(LISTE,int,char*);
Je ne sais pas comment faire pour retourner NULL quand la création a échouée. J'ai essayé:
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
21 /* Créer une liste vide, d'une capacité initiale de ci places; retourne NULL si la création a échouée. */ LISTE creer(int ci) { LISTE liste; /* Le premier élément de la liste sera de rang 0 */ liste.rang = 0; /* Allocation du tableau des éléments */ liste.tableau = (char*)malloc(sizeof(char) * ci); /* Test de création de la liste */ if(liste.tableau) { liste.capacite = ci; return liste; } return liste; }
return (LISTE)NULL;
return (LISTE)0;
return NULL;
return 0;
et rien ne marche. (j'utilise stdio.h pour NULL)
Autre question, ma fonction detruire est-elle correcte ?
Enfin, comment compter le nombre d'éléments dans une telle liste ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 /* Détruit la liste et la fait pointer sur NULL */ void detruire(LISTE* liste) { /* Libération de l'espace mémoire */ if(liste -> tableau) free(liste -> tableau); /* liste pointe sur NULL */ liste = NULL; }
Faut-il réserver un champ nbelements dans la structure ou faut-il parcourir le tableau des éléments avec un pointeur (je voulais suivre cette deuxième méthode mais je suis bloqué) ?
a+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 /* Retourne le nombre d'éléments contenus dans la liste */ int nbElements(LISTE liste) { auto int nb = 0; auto int* p; p = liste.tableau; ??? }
Partager