Les opérations de la liste chainée

Contenu du snippet

printf("\n\t*******Manipulation De Liste chainée*******\n\n");
printf("\t******************* MENU ******************\n");
printf ("\t1. Ajout au debut de la liste\n");
printf ("\t2. Ajout a la fin de la liste\n");
printf ("\t3. Affichage de la liste\n");
printf ("\t4. Suppression dans la liste\n");
printf ("\t5. Detruire la liste\n");
printf ("\t6. Recherche dans la liste\n");
printf ("\t7. Inverser la liste\n");
printf ("\t8. Tri de la liste\n");
printf ("\t9. Quitter\n");

Source / Exemple :


#include<stdio.h>
#include<stdlib.h>
 
typedef struct liste
       {
         int nbr;
         struct liste *suiv;
       }liste;
 typedef liste *lis;
lis ajoutentete(lis deb,int x)
{   
  liste *g;
  g=malloc(sizeof(liste));
  g->nbr=x;
  g->suiv=deb;
  return g;
}
lis ajoutenfin(lis deb, int valeur)
{
    liste *nouvelElement=malloc(sizeof(liste));
     nouvelElement->nbr = valeur;
     nouvelElement->suiv = NULL;
     if(deb == NULL)
    {
         return nouvelElement;
    }
    else
    {
        liste* temp=deb;
        while(temp->suiv != NULL)
        {
            temp = temp->suiv;
        }
        temp->suiv = nouvelElement;
        return deb;
    }
}
void affiche(lis g)
{
  liste* p=g;
  while(p!=NULL)
  {
     printf("%d==>",p->nbr);
     p=p->suiv;
  }
  printf("NULL\n");
}

lis Supprdebut (lis g,int f)
{ liste *h;
  if(g!=NULL)
   if(g->nbr==f)
    {     
      h=g;
      g=g->suiv;            
      free(h);
    } 
   else
      g->suiv=Supprdebut(g->suiv,f);
      
  return g;
}
lis detruire (lis g)
{ 
 lis d;
  while(g!=NULL)
  { 
   d=g;  
   g=g->suiv;
   free(d);
  }
  return NULL;
}
int recherche(lis deb,int k)
{ 
  while(deb!=NULL)
   {
     if (deb->nbr==k) 
     return 1;
     deb=deb->suiv;
   } 
   return 0;  
}
lis inverser (lis a)
{
 lis p=NULL,q;
while(a!=NULL)
{
 q=a->suiv;
 a->suiv=p;
 p=a;
 a=q;
}
return p;
}
lis tri(lis deb)
{
  lis q=deb,p;
  int v;
  while(q!=NULL)
  {
   p=q->suiv;
   while(p!=NULL)
   {
    if(q->nbr < p->nbr)
     {
       v=p->nbr;
       p->nbr=q->nbr;
       q->nbr=v;
     }
     p=p->suiv;
   }
    q=q->suiv;  
 }
 return deb;
}
int main()
{
  lis k,z=NULL;
  int n,Y,x,t;
  char r;
  do{
     printf("\n\t*******Manipulation De Liste chainée*******\n\n");
     printf("\t******************* MENU ******************\n");
     printf ("\t1. Ajout au debut de la liste\n");
     printf ("\t2. Ajout a la fin de la liste\n");
     printf ("\t3. Affichage de la liste\n");
     printf ("\t4. Suppression dans la liste\n");
     printf ("\t5. Detruire la liste\n");
     printf ("\t6. Recherche dans la liste\n");
     printf ("\t7. Inverser la liste\n");
     printf ("\t8. Tri de la liste\n");
     printf ("\t9. Quitter\n");
     printf("\t*******************************************\n");
     printf ("\nFaites votre choix : ");
     scanf ("%d", &x);
   switch(x)
      {
           case 1: do{ 
                        printf("Entrez nombre: ");
                        scanf("%d",&n);
                        z=ajoutentete(z,n);
                        printf("un autre nombre(O/N):");
                        scanf("%s",&r);
                      }while(r!='n');break;
           case 2: printf("Entrez nombre:");
                    scanf("%d",&Y);
                    z=ajoutenfin(z,Y);
                    break;
           case 3: affiche(z);break;
           case 4:printf("Entrez nombre: ");
                   scanf("%d",&t);
                   z=Supprdebut(z,t);break;

           case 5:detruire(z);break;
           case 6: printf("Entrez nombre a rechercher: ");
                   scanf("%d",&t);
                   if(recherche(z,t)==1)
                   printf("nombre %d existe dans la liste\n",t);
                   else
                   printf("nombre %d n\'existe dans la liste\n",t);
                   break;
           case 7:z=inverser(z);break;
           case 8:z=tri(z);break;
                                   
      } 

 }while (x!=9);
 printf ("TAPPER UNE TOUCHE");
 getche();
   
}

Conclusion :


logiciel de travail est dev c++

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.