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
| /* Fonction qui detruit un element de la liste dont le premier element est une ignoble
* variable globale diaboliquement appele firsta et qui ferait mieux d'etre passe en argument,
* enfin moi j'dit ca j'dit rien...
*/
void deleteAccount(void){
/* Numero de l'element a supprimer qui sera demande a l'utilisateur */
int record;
/* Variable sauvegardant l'element precedent celui en cours */
struct account *previousa;
/* Si liste vide, on sort */
if(firsta==NULL)
{
puts("There are no records to delete!");
return;
}
listAll(); /* show all records first */
/* Demande du numero de l'element a supprimer */
printf("Enter account number to delete: ");
scanf("%d",&record);
/* L'element courant est initialise au premier element de la liste */
/* Au passage, currenta est une variable globale aussi, ce qui n'a absolument aucun interet */
currenta = firsta;
/* Tant qu'il reste des elements, dans la liste, on boucle */
while(currenta != NULL)
{
if(currenta->number == record)
/* Youhou, on a trouve l'element a supprimer !!*/
{
if(currenta == firsta)
/* Au cas ou l'element a supprimer est le premier,
* on reinitalise le premier element de la liste avec son suivant
*/
{
firsta=currenta->next;
}
else
/* Cas normal, connection entre le precedent et le suivant de l'element a supprimer */
{
previousa->next = currenta->next;
}
/* Destruction de l'element courant */
free(currenta);
printf("Acount %d deleted!\n",record);
return;
}
else
/* L'element courant n'est pas celui a supprimer, on continu a boucler */
/* Le courant devient le precedent, et le suivant devient le courant */
{
previousa = currenta;
currenta = currenta->next;
}
}
/* Toute la liste a ete analyse, aucun element n'a ete trouve */
printf("Account %d was not found!\n",record);
puts("Nothing deleted.");
} |
Partager