// cours_18/01/2003 : selection multiple
#include "stdio.h"
#include <stdafx.h>
struct cel
{ int info;
cel *voisin;
};
struct cel *tliste, *fliste;
struct cel *surf, *surf_avant;
int i;
int i_mini=0,i_maxi=0;
void Ajouter_en_tete() {
printf("\nAjouter un nouvel element en tete de liste");
printf("\nSaisir une nouvelle donnée :");
surf=new cel;
scanf("%i",&surf->info);
getchar();
surf->voisin=NULL;
if (fliste==NULL) {fliste=surf;};
surf->voisin=tliste;
tliste = surf;
};
void Ajouter_en_fin() {
printf("\nAjouter un nouvel element en fin de liste");
printf("\nSaisir une nouvelle donnée :");
surf=new cel;
scanf("%i",&surf->info);
getchar();
surf->voisin=NULL;
if (tliste==NULL)
{tliste=surf;}
else
{
fliste->voisin = surf;
};
fliste=surf;
};
void Rechercher_un_element() {
int rech=0;
i=1;
printf("\nRechercher un element dans la liste");
printf("\nSaisir une valeur à chercher :");
scanf("%i",&rech);
getchar();
surf=tliste;
while (surf!=NULL)
{
if (surf->info==rech) {printf("\n -> trouvé à l'index %i",i);};
i++;
surf=surf->voisin;
};
};
void Afficher_les_elements() {
printf("\nAfficher les elements de la liste");
i_mini=0;
i_maxi=0;
if (tliste==NULL) {printf("\n-- la liste est vide --");}
else
{
surf=tliste;
i=1;
i_mini=i;
while (surf != NULL)
{
printf("\n %ieme element de la file %i",i,surf->info);
surf=surf->voisin;
i_maxi=i;
i++;
};
};
};
void Supprimer_un_element() {
int rech = 0;
printf("\nSupprimer un element de la liste");
Afficher_les_elements();
if (i_mini!=0)
{
printf("\nDonnez l'index de l'element à supprimer :");
printf("\nentre %i et %i :",i_mini, i_maxi);
scanf("%i",&rech);
getchar();
if ((rech<i_mini)||(rech>i_maxi))
{printf("\n *** index hors limites ***");}
else
{printf("\nsuppression en cours");
i=1;
surf=tliste;
surf_avant=NULL;
while (i<rech)
{printf("\n %ieme element de %i de la file %i",i,rech,surf->info);
surf_avant=surf;
surf=surf->voisin;
i++;
};
printf("\n A SUPPRIMER :");
printf("\n %ieme element de %i de la file %i",i,rech,surf->info);
if (rech==i_mini) { tliste=surf->voisin;}
else
{
if (rech==i_maxi) { fliste=surf_avant; surf_avant->voisin=NULL; }
else
{ surf_avant->voisin=surf->voisin;};
};
};
};
};
void exo1 ()
{int i;
char x;
for (i=0;i<6;i++)
{
printf("\nDonner la valeur de x ? :");
x=getchar ();getchar();
switch(x)
{
case 'a':
case 'A': printf("\n Traitement A \n");break;
case 'b':
case 'B': printf("\n Traitement B \n");break;
case 'i':
case 'I': printf("\n Traitement I \n");break;
case 'n':
case 'N': printf("\n Traitement N \n");break;
default:printf("Traitement par defaut: \n");
}
}
};
char exo2_menu()
{ char choix = 'o';
printf("\n\n================================");
printf("\nOperations sur liste dynamique :");
printf("\n================================");
printf("\n A (a) - Ajouter un nouvel element en tete de liste");
printf("\n F (f) - Ajouter un nouvel element en fin de liste");
printf("\n R (r) - Rechercher un element dans la liste");
printf("\n S (s) - Supprimer un element de la liste");
printf("\n L (l) - Afficher les elements de la liste");
printf("\n Q (q) - Quitter l'application");
printf("\nEntrez votre choix :");
choix=getchar(); getchar();
return choix;
};
void exo2()
{
tliste=NULL;
fliste=NULL;
char choix='o';
choix=exo2_menu();
while ((choix!='q')&&(choix!='Q'))
{ switch (choix)
{
case 'a': case 'A' : printf("\nChoix A"); Ajouter_en_tete();
break;
case 'f': case 'F' : printf("\nChoix F"); Ajouter_en_fin();
break;
case 'r': case 'R' : printf("\nChoix R"); Rechercher_un_element();
break;
case 's': case 'S' : printf("\nChoix S"); Supprimer_un_element();
break;
case 'l': case 'L' : printf("\nChoix L"); Afficher_les_elements();
break;
default : printf("\nCHOIX INCONNU");
};
choix=exo2_menu();
};
};
void main()
{
printf("\nDebut programme");
exo2();
printf("\nFin programme\n");
}