Untitled
unknown
plain_text
2 years ago
4.6 kB
21
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