1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
|
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/* Prototypes */
p_list new_list(void);
t_Bool is_empty_list(p_list liste);
int list_length(p_list liste);
void print_list(p_list liste);
p_list push_back_list(p_list liste, char *player, int score);
p_list push_front_list(p_list liste, char *player, int score);
p_list pop_back_list(p_list liste);
p_list pop_front_list(p_list liste);
p_list clear_list(p_list liste);
void main(void){
p_list li = new_list();
print_list(li);
//li = push_back_list(li, chaineAvecEspace, (int) endPlayerScore);
print_list(li);
writeScore ("data/score.score", chaineAvecEspace, endPlayerScore) ;
//readCharByChar2 ("data/score.score") ;
readData2 ("data/score.score") ;
}
/**
* Retourne une nouvelle Liste
* @return Une liste vide
*/
p_list new_list(void) {
return NULL;
}
/**
* Vérifie si une List est vide
* @param liste La liste à tester
* @return true si elle est vide, faux sinon
*/
t_Bool is_empty_list(p_list liste) {
if(liste == NULL) {
return VRAI ;
}
return FAUX ;
}
/**
* Retourne la taille de la Liste
* @param liste La liste
* @return Le nombre d'élements de la Liste
*/
int list_length(p_list liste) {
int size = 0;
if(is_empty_list(liste))
return size;
while(liste != NULL)
{
size++;
liste = liste->next;
}
return size;
}
/**
* Affiche une Liste
* @param liste La liste à afficher
*/
void print_list(p_list liste){
if(is_empty_list(liste)) /* si la liste est vide, on sort directement. */
{
printf("Rien a afficher, la Liste est vide.\n") ;
return ; /* void */
}
while(liste != NULL){
printf("[%s] ", liste->classement->nom) ;
printf("[%d] ", liste->classement->score) ;
liste = liste->next ;
}
printf("\n") ;
}
/**
* Ajoute un entier en fin de Liste
* @param liste La liste
* @param x L'entier à insérer
* @return La liste avec le nouvel élement ajouté
*/
p_list push_back_list(p_list liste, char *player, int score) {
t_classements *nouveau_score ; /* nouveau score de type classements. */
nouveau_score = malloc(sizeof(*nouveau_score)) ; /* allocation. */
if(nouveau_score == NULL) {
fprintf(stderr, "Erreur : probleme allocation dynamique.\n") ;
exit(EXIT_FAILURE) ;
}
(*nouveau_score).classement->nom = player ;
(*nouveau_score).classement->score = score ;
(*nouveau_score).next = NULL ; /* initialiser l'élément suivant à NULL */
if(is_empty_list(liste)){
return nouveau_score ;
}
t_classements *temp ;
temp = liste ;
while(temp->next != NULL) {
temp = temp->next ;
}
temp->next = nouveau_score ;
return liste ; /* retourne l'adresse du nouveau_score. */
}
/**
* Ajoute un entier en début de Liste
* @param liste La liste
* @param x L'entier à insérer
* @return La liste avec le nouvel élement ajouté
*/
p_list push_front_list(p_list liste, char *player, int score){
t_classements *nouveau_score;
nouveau_score = malloc(sizeof(*nouveau_score));
if(nouveau_score == NULL){
fprintf(stderr, "Erreur : probleme allocation dynamique.\n");
exit(EXIT_FAILURE);
}
(*nouveau_score).classement->nom = player ;
(*nouveau_score).classement->score = score ;
(*nouveau_score).next = NULL ;
if(is_empty_list(liste))
(*nouveau_score).next = NULL;
else
(*nouveau_score).next = liste;
return nouveau_score;
}
/**
* Supprime un élément de la fin de la Liste.
* @param liste La liste.
* @return La liste sans l'élément retiré.
*/
p_list pop_back_list(p_list liste){
if(is_empty_list(liste))
return new_list();
/* Si la liste n'a qu'un seul élément. */
if(liste->next == NULL){
free(liste);
liste = NULL;
return new_list();
}
t_classements *temp = liste;
t_classements *before = liste;
while(temp->next != NULL){
before = temp;
temp = temp->next;
}
before->next = NULL;
free(temp);
temp = NULL;
return liste;
}
/**
* Supprime un élement de la tête de la Liste
* @param li La liste
* @return La liste sans l'élément retiré
*/
p_list pop_front_list(p_list liste){
t_classements *element;
element = malloc(sizeof(*element));
if(element == NULL){
fprintf(stderr, "Erreur : probleme allocation dynamique.\n");
exit(EXIT_FAILURE);
}
if(is_empty_list(liste))
return new_list();
element = liste->next;
free(liste);
liste = NULL;
return element;
} |
Partager