Skip to content
Snippets Groups Projects
Commit 3e4bdee6 authored by ColinDrieu's avatar ColinDrieu
Browse files

Fin du code du fichier joueurList.c

Toutes les fonctions du fichier joueurList.c sont codees.
Mise a jour de joueurList.h
parent 3b051e3b
No related branches found
No related tags found
No related merge requests found
......@@ -92,9 +92,34 @@ int emptyJoueurList(ListJoueur * l){
*/
int outOfJoueurList(ListJoueur * l){
if(!emptyJoueurList(l)){
if(l->currentNodeJoueur==l->lastNodeJoueur){
return 1;
}
return (l->currentNodeJoueur==l->lastNodeJoueur);
}
return 0;
}
/*!
* \fn int isFirstJoueurList(ListJoueur * l)
* \brief La fonction teste si le NodeJoueur courant est le premier de la liste.
*
* \param La ListJoueur a tester
* \return 1 si le NodeJoueur courant est le premier de la liste, 0 sinon
*/
int isFirstJoueurList(ListJoueur * l){
if(!emptyJoueurList(l)){
return (l->currentNodeJoueur==l->firstNodeJoueur);
}
return 0;
}
/*!
* \fn int isNextNodeJoueurList(ListJoueur * l, NodeJoueur * n)
* \brief La fonction teste si le NodeJoueur en parrametre est le NodeJoueur suivant le NodeJoueur courant.
* \param La ListJoueur et le NodeJoueur a tester.
* \return 1 si le NodeJoueur en parrametre est le NodeJoueur suivant le NodeJoueur courant, 0 sinon.
*/
int isNextNodeJoueurList(ListJoueur * l, NodeJoueur * n){
if(!emptyJoueurList(l)){
return (l->currentNodeJoueur->next==n);
}
return 0;
}
......@@ -151,6 +176,8 @@ int addNodeJoueurFirst(ListJoueur * l, NodeJoueur * j){
if (l!=NULL){
if (emptyJoueurList(l)){
l->firstNodeJoueur=j;
l->currentNodeJoueur=j;
l->lastNodeJoueur=j;
return 1;
}
else{
......@@ -182,8 +209,130 @@ int addNodeJoueurLast(ListJoueur * l, NodeJoueur * j){
return 0;
}
int deleteCurrentNodeJoueur(ListJoueur * l);
/*!
* \fn deleteFirstNodeJoueur(ListJoueur * l)
* \brief La fonction supprime le premier NodeJoueur de la liste et libere l'espace alloue.
*
* \param La ListJoueur a modifier.
* \return 1 si tout s'est bien passe, 0 sinon
*/
int deleteFirstNodeJoueur(ListJoueur * l){
if(!emptyJoueurList(l)){
NodeJoueur * tempNodeJoueur = l->firstNodeJoueur;
l->firstNodeJoueur=l->firstNodeJoueur->next;
deleteNodeJoueur(tempNodeJoueur);
return 1;
}
return 0;
}
void setOnJoueur(ListJoueur * l, Joueur * j);
/*!
* \fn deleteLastNodeJoueur(ListJoueur * l)
* \brief La fonction supprime le dernier NodeJoueur de la liste et libere l'espace alloue.
*
* \param La ListJoueur a modifier.
* \return 1 si tout s'est bien passe, 0 sinon
*/
int deleteLastNodeJoueur(ListJoueur *l){
if(!emptyJoueurList(l)){
if(l->firstNodeJoueur==l->lastNodeJoueur){
return deleteFirstNodeJoueur(l);
}
else{
NodeJoueur * tempNodeJoueur=l->lastNodeJoueur;
setOnFirstJoueur(l);
while(!isNextNodeJoueurList(l,l->lastNodeJoueur)){
nextJoueur(l);
}
l->currentNodeJoueur=l->lastNodeJoueur;
l->currentNodeJoueur->next=NULL;
deleteNodeJoueur(tempNodeJoueur);
return 1;
}
}
return 0;
}
/*!
* \fn deleteCurrentNodeJoueur(ListJoueur * l)
* \brief La fonction supprime le NodeJoueur courant de la liste et libère l'espace alloue.
*
* \param La ListJoueur a modifier.
* \return 1 si tout s'est bien passe, 0 sinon
*/
int deleteCurrentNodeJoueur(ListJoueur * l){
if(isFirstJoueurList(l)){
return deleteFirstNodeJoueur(l);
}
else if(outOfJoueurList(l)){
return deleteLastNodeJoueur(l);
}
else if(!emptyJoueurList(l)){
NodeJoueur * tempNodeJoueur=l->currentNodeJoueur;
setOnFirstJoueur(l);
while(!isNextNodeJoueurList(l,tempNodeJoueur)){
nextJoueur(l);
}
l->currentNodeJoueur->next=tempNodeJoueur->next;
deleteNodeJoueur(tempNodeJoueur);
return 1;
}
return 0;
}
int deleteNodeJoueurFromList(ListJoueur * l, Joueur * j);
/*!
* \fn void setOnJoueur(ListJoueur * l, Joueur * j)
* \brief La fonction positionne le NodeJoueur courant sur le NodeJoueur possedant la valeur Joueur.
*
* \param La ListJoueur a modifier, la valeur de Joueur a trouver.
*/
void setOnJoueur(ListJoueur * l, Joueur * j){
if(!emptyJoueurList(l)){
setOnFirstJoueur(l);
while(j!=getCurrentJoueur(l)){
nextJoueur(l);
}
}
}
/*!
* \fn int deleteNodeJoueurFromList(ListJoueur * l, Joueur * j)
* \brief La fonction efface le NodeJoueur contenant le Joueur en parrametre et libere l'espace alloue en memoire.
* Elle repositione la valeur courante sur le NodeJoueur courant avant l'appel de la fonction.
* Si la valeur a supprimmer est la valeur courante avant l'appel de la fonction, elle positionne la valeur courante sur le NodeJoueur suivant.
* Si la valeur a supprimer est le derniere NodeJoueur de la liste, la valeur courante est placee sur le premier NodeJoueur.
* \param La ListJoueur a modifier, la valeur de Joueur a supprimer.
* \return 1 si tout c'est bien passe, 0 sinon.
*/
int deleteNodeJoueurFromList(ListJoueur * l, Joueur * j){
int i;
if(!emptyJoueurList(l)){
if(j==getCurrentJoueur(l)){
i=deleteCurrentNodeJoueur(l);
nextJoueur(l);
return i;
}
else{
NodeJoueur * tempCurrent=l->currentNodeJoueur;
setOnFirstJoueur(l);
while((getCurrentJoueur(l)!=j)&&(!outOfJoueurList(l))){
if(outOfJoueurList(l)){
if(getCurrentJoueur(l)!=j){
return 0;
}
else{
i=deleteLastNodeJoueur(l);
setOnFirstJoueur(l);
return i;
}
}
else{
i=deleteCurrentNodeJoueur(l);
l->currentNodeJoueur=tempCurrent;
return i;
}
}
}
}
return 0;
}
......@@ -20,6 +20,8 @@ void printJoueurList(ListJoueur * l);
int emptyJoueurList(ListJoueur * l);
int outOfJoueurList(ListJoueur * l);
int isFirstJoueurList(ListJoueur * l);
int isNextNodeJoueurList(ListJoueur * l,NodeJoueur * n);
void setOnFirstJoueur(ListJoueur * l);
void nextJoueur(ListJoueur * l);
......@@ -27,6 +29,8 @@ Joueur * getCurrentJoueur(ListJoueur * l);
int addNodeJoueurFirst(ListJoueur * l, NodeJoueur * j);
int addNodeJoueurLast(ListJoueur * l, NodeJoueur * j);
int deleteFirstNodeJoueur(ListJoueur * l);
int deleteLastNodeJoueur(ListJoueur *l);
int deleteCurrentNodeJoueur(ListJoueur * l);
void setOnJoueur(ListJoueur * l, Joueur * j);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment