Untitled
unknown
plain_text
2 years ago
4.6 kB
13
Indexable
//Algorithmique// //TP n°= 4// //Les listes chainées// //Exercice 2// #include<stdio.h> #include<stdlib.h> //Déclaration// struct cellule{ int val; struct cellule *suivant; }; typedef struct cellule cellule; typedef cellule* Liste; //Fonction d’initialisation d’une liste chainée// cellule* initialiser_Liste(cellule* liste){ liste = NULL; return liste ; } //Fonction Afficher une Liste Chainée// void Afficher_Liste(cellule* liste){ if (liste==NULL) printf("La Liste est Vide!!\n"); else{ cellule* tmp = liste; while(tmp != NULL){ printf(" %d ", tmp->val); tmp = tmp->suivant; } printf("\n"); } } //Fonction d’ajouter à la fin de la liste// cellule* Ajouter_Fin_Liste(cellule* liste, int valeur){ cellule* newcellule = malloc(sizeof(cellule)); newcellule ->val = valeur; newcellule ->suivant = NULL; if(liste == NULL) return newcellule; else{ cellule* temp = liste; while(temp->suivant != NULL) temp = temp->suivant; temp->suivant = newcellule; return liste; } } //l’affichage du champs val d'une liste// //ordre croissant// void AfficherCroi(cellule* liste){ if(liste!=NULL){ printf("%d\t",liste->val); AfficherCroi(liste=liste->suivant); } } //ordre decroissant// void AfficherDecroi(cellule* liste){ if(liste!=NULL){ AfficherDecroi(liste->suivant); printf("%d\t", liste->val); } } //insersion d'un element dans une liste chainee triee par ordre croissant// cellule* InsersionTriCroi(cellule* liste,int v){ cellule* L=liste; cellule* P=liste; cellule* Q=malloc(sizeof(cellule)); Q->val=v; Q->suivant=NULL; if (liste==NULL || (liste->val)>(Q->val)){ Q->suivant=liste; liste=Q; return liste; } while (P->suivant!=NULL){ L=P; P=P->suivant; if((Q->val)<(P->val)){ Q->suivant=P; L->suivant=Q; return liste; } } P->suivant=Q; return liste; } //MENU// int main(){ int n,v,i,l; int choix; cellule* ma_liste=malloc(sizeof(cellule)); cellule* my_liste=malloc(sizeof(cellule)); printf("********************************LE MENU**********************************\n\n"); printf("1: saisir une liste chainee\n"); printf("2: afficher une liste chainee\n"); printf("3: l'affichage du champs val d'une liste dans l'ordre croissant\n"); printf("4: l'affichage du champs val d'une liste dans l'ordre decroissant\n"); printf("5: insersion d'un element dans une liste chainee triee par ordre croissant\n"); printf("6: verification si une liste est triee par ordre croissant <<iterative>>\n"); printf("7: verification si une liste est triee par ordre croissant <<recursive>>\n"); printf("8: l'inverse d'une liste deja triee en ordre croissant\n"); printf("9: fusionnement de 2 listes dans une seule liste en gardant le meme tri\n"); printf("\n*************************************************************************\n"); do{ printf("\nVouiller saisir votre choix:\t"); scanf("%d",&choix); printf("\n"); switch(choix){ case 1: printf("Vouiller saisir la taille de votre liste:\t"); scanf("%d",&n); printf("\nVouiller saisir les element de la liste chianee:\n\n"); for(i=0;i<n;i++){ scanf("%d",&l); ma_liste=Ajouter_Fin_Liste(ma_liste,l); } break; case 2: printf("Votre liste chainee est:\n"); Afficher_Liste(ma_liste); break; case 3: printf("l'affichage du champs val de votre liste dans l'ordre croissant est:\n"); AfficherCroi(ma_liste); break; case 4: printf("l'affichage du champs val de votre liste dans l'ordre croissant est:\n"); AfficherDecroi(ma_liste); break; case 5: printf("Vouiller saisir une valeur pour l'insere:\n"); scanf("%d",&v); InsersionTriCroi(ma_liste,v); printf("Votre liste aprés l'insersion du valeur <<%d>>:\n",v); Afficher_Liste(ma_liste); } }while(choix!=0); }
Editor is loading...
Leave a Comment