0% ont trouvé ce document utile (0 vote)
26 vues5 pages

Programme

Ce document contient un code C pour la gestion de listes chaînées, incluant des fonctions pour créer, afficher, empiler et défiler des nœuds. Il propose également des options pour créer des listes en tête, en queue, circulaires, ainsi qu'en utilisant des piles et des files. Un menu interactif permet à l'utilisateur de choisir différentes opérations sur les listes.
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
26 vues5 pages

Programme

Ce document contient un code C pour la gestion de listes chaînées, incluant des fonctions pour créer, afficher, empiler et défiler des nœuds. Il propose également des options pour créer des listes en tête, en queue, circulaires, ainsi qu'en utilisant des piles et des files. Un menu interactif permet à l'utilisateur de choisir différentes opérations sur les listes.
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

#include<stdio.

h>
#include<stdlib.h>

struct noeud {
int donnee;
struct noeud*suiv;
};
typedef struct noeud* list;

list inserer_noeud(list tete,int x)


{list nouv =(list)malloc (sizeof(struct noeud));
nouv->donnee=x;
nouv->suiv=tete;
tete=nouv;
return tete;
}
list creation_tete()
{
list nouv;
list tete=NULL;
int nb,v;
printf("donner le nombre des noeuds");
scanf("%d",&nb);
for(int i=1;i<=nb;i++)
{printf("donner la valeur de donner");
scanf("%d",&v);
list nouv=(list)malloc(sizeof(struct noeud));
nouv->donnee=v;
nouv->suiv=tete;
tete=nouv;
}
return tete;
}
void affichage(list tete){
list p;
p=tete;
while(p!=NULL)
{printf("%d",p->donnee);
p=p->suiv;
}
}
list creation_en_queue(list*tete){

int nb;
list r,q;
tete=NULL;
printf("entrer le nombre des noeuds");
scanf("%d",&nb);
for(int i=0;i<nb;i++){
r=(list)malloc (sizeof(struct noeud));
scanf("%d",r->donnee);
if(tete=NULL){
tete=r;
q=r;
} else{
q->suiv=r;
q=r;}}
q->suiv=NULL;
return tete;}

void affichage2(list*tete){
list p;
p=tete;
if(tete=NULL){
printf("la liste est vide");

}
else{while(p!=NULL){
printf("%d",p->donnee);
p=p->suiv;
}

}
}

list creation_circulaire(list *tete) {


int nb;
list r, q;
*tete = NULL;
printf("Entrer le nombre des noeuds : ");
scanf("%d", &nb);
for (int i = 0; i < nb; i++) {
r = (list)malloc(sizeof(struct noeud));
printf("Entrer la valeur du nœud : ");
scanf("%d", &(r->donnee));
if (*tete == NULL) {
*tete = r;
q = r;
} else {
q->suiv = r;
q = r;
}
}
q->suiv = *tete;

return *tete;
}
void affichage_circulaire(list* tete) {
list p;
p = tete;

if (tete == NULL) {
printf("La liste circulaire est vide\n");
} else {
while (p != tete);
printf("%d ", p->donnee);
p = p->suiv;
}

printf("%d",p->donnee);
}

list empiler(list tete, int x) {


list nouveau = (list)malloc(sizeof(struct noeud));
nouveau->donnee = x;
nouveau->suiv = tete;
tete = nouveau;
return tete;
}

// Fonction pour dépiler un nœud


list depiler(list tete) {
if (tete != NULL) {
list temp = tete;
tete = tete->suiv;
free(temp);
}
return tete;
}

// Fonction pour créer une liste chaînée en utilisant une approche de pile
list creer_liste_en_utilisant_pile() {
list tete = NULL;
int nb, v;
printf("Entrez le nombre de nœuds : ");
scanf("%d", &nb);

for (int i = 1; i <= nb; i++) {


printf("Entrez la valeur du nœud : ");
scanf("%d", &v);
tete = empiler(tete, v);
}

return tete;
}

// Fonction pour afficher la liste chaînée


void afficher_list(list tete) {
list p;
p = tete;
while (p != NULL) {
printf("%d ", p->donnee);
p = p->suiv;
}
printf("\n");
}
// Fonction pour ajouter un nœud à la file
list enfiler(list *tete, int x) {
list nouveau = (list)malloc(sizeof(struct noeud));
nouveau->donnee = x;
nouveau->suiv = NULL;

if (*tete == NULL) {
*tete = nouveau;
} else {
list p = *tete;
while (p->suiv != NULL) {
p = p->suiv;
}
p->suiv = nouveau;
}

return *tete;
}
// Fonction pour retirer un nœud de la file
list defiler(list *tete) {
if (*tete != NULL) {
list temp = *tete;
*tete = (*tete)->suiv;
free(temp);
}

return *tete;
}

// Fonction pour créer une liste chaînée en utilisant une approche de file
list creer_liste_en_utilisant_file() {
list tete = NULL;
int nb, v;
printf("Entrez le nombre de nœuds : ");
scanf("%d", &nb);

for (int i = 1; i <= nb; i++) {


printf("Entrez la valeur du nœud : ");
scanf("%d", &v);
tete = enfiler(&tete, v);
}

return tete;
}

// Fonction pour afficher la liste chaînée


void afficher_liste(list tete) {
list p;
p = tete;
while (p != NULL) {
printf("%d ", p->donnee);
p = p->suiv;
}
printf("\n");
}
int main() {
list tete = NULL;
int choix;

do {
printf("\nMenu :\n");
printf("1. Créer une liste en tête\n");
printf("2. Afficher la liste\n");
printf("3. Créer une liste en queue\n");
printf("4. Afficher la liste (alternative)\n");
printf("5. Créer une liste circulaire\n");
printf("6. Afficher la liste circulaire\n");
printf("7. Créer une liste en utilisant une pile\n");
printf("8. Afficher la liste (pile)\n");
printf("9. Créer une liste en utilisant une file\n");
printf("10. Afficher la liste (file)\n");
printf("0. Quitter\n");

printf("Entrez votre choix : ");


scanf("%d", &choix);
switch (choix) {
case 1:
tete = creation_tete();
break;
case 2:
affichage(tete);
break;
case 3:
tete = creation_en_queue(&tete);
break;
case 4:
affichage2(&tete);
break;
case 5:
tete = creation_circulaire(&tete);
break;
case 6:
affichage_circulaire(&tete);
break;
case 7:
tete = creer_liste_en_utilisant_pile();
break;
case 8:
afficher_list(tete);
break;
case 9:
tete = creer_liste_en_utilisant_file();
break;
case 10:
afficher_liste(tete);
break;
case 0:
printf("Au revoir !\n");
break;
default:
printf("Choix invalide. Veuillez réessayer.\n");
}
} while (choix != 0);

// Libérer la mémoire (nettoyage)


while (tete != NULL) {
tete = depiler(tete);
}

return 0;
}

Vous aimerez peut-être aussi