tp9

Anonymous
c_cpp
04/21/2026 2:15 PM
5.6 KB
9
Indexable
#include <stdio.h>
#include <stdlib.h>
#include<string.h>

typedef struct cellule {
    int id;
    char nom[30];
    struct cellule*suivant;
} cellule;

cellule* ajouterDebut(cellule* tete, int id, char nom[]){
    cellule * nouveau =
    (cellule*)malloc(sizeof(cellule));
    nouveau->id = id;
    strcpy(nouveau->nom, nom);
    nouveau->suivant = tete;
    return nouveau;
}
cellule* ajouterfin(cellule* tete, int id,char nom[]){
    cellule* nouveau = (cellule*)malloc(sizeof(cellule));
    nouveau->id = id;
     strcpy(nouveau->nom, nom);
    nouveau->suivant = NULL;
    if (tete == NULL)
        return nouveau;
    cellule* temp = tete;
    while (temp-> suivant != NULL)
        temp = temp-> suivant;
    temp ->suivant = nouveau;
    return tete;
}
cellule* ajouterApresID(cellule*tete , int idcible,  int id,char nom[]){
     cellule* temp = tete;
     while(temp != NULL && temp -> id != idcible)
        temp = temp-> suivant;
     if(temp == NULL){
        printf("in non trouver !\n");
         return tete;
     }
     cellule* nouveau = (cellule*)malloc(sizeof(cellule));
      nouveau->id = id;
     strcpy(nouveau->nom, nom);

       nouveau->suivant = temp->suivant;
       temp->suivant = nouveau;
    return nouveau;
}
 void afficherliste(cellule* tete){
 cellule* temp = tete;
 while(temp != NULL){
    printf("id : %d | Nom: %s\n", temp->id, temp->nom);
    temp = temp->suivant;

  while (temp != NULL) {
        printf("ID: %d | Nom: %s\n", temp->id, temp->nom);
        temp = temp->suivant;
    }
}
cellule* rechercherParID(cellule* tete, int id) {
    while (tete != NULL) {
        if (tete->id == id)
            return tete;
        tete = tete->suivant;
    }
    return NULL;
}int compterClients(cellule* tete) {
    int count = 0;
    while (tete != NULL) {
        count++;
        tete = tete->suivant;
    }
    return count;
}void modifierNomClient(cellule* tete, int id, char nouveauNom[]) {
    cellule* client = rechercherParID(tete, id);

    if (client != NULL) {
        strcpy(client->nom, nouveauNom);
    } else {
        printf("Client non trouvé !\n");
    }
}void libererListe(cellule* tete) {
    cellule* temp;
    while (tete != NULL) {
        temp = tete;
        tete = tete->suivant;
        free(temp);
    }
}

int main() {
    cellule* tete = NULL;
    int choix, id, idCible;
    char nom[30];

    do {
    printf("\n--- MENU ---\n");
    printf("1. Ajouter au debut\n");
    printf("2. Ajouter a la fin\n");
    printf("3. Ajouter apres ID\n");
    printf("4. Afficher liste\n");
    printf("5. Rechercher client\n");
    printf("6. Compter clients\n");
    printf("7. Modifier nom\n");
    printf("0. Quitter\n");
    printf("Choix: ");
    scanf("%d", &choix);

switch (choix) {
                case 1:
            printf("ID: "); scanf("%d", &id);
            printf("Nom: "); scanf("%s", nom);
            tete = ajouterDebut(tete, id, nom);
        break;

            case 2:
            printf("ID: "); scanf("%d", &id);
            printf("Nom: "); scanf("%s", nom);
            tete = ajouterfin(tete, id, nom);
        break;

            case 3:
                printf("ID cible: "); scanf("%d", &idCible);
                printf("Nouvel ID: "); scanf("%d", &id);
                printf("Nom: "); scanf("%s", nom);
                tete = ajouterApresID(tete, idCible, id, nom);
                break;

            case 4:
                afficherliste(tete);
                break;

            case 5:
                printf("ID a rechercher: ");
                scanf("%d", &id);
                if (rechercherParID(tete, id))
                    printf("Client trouvé !\n");
                else
                    printf("Non trouvé !\n");
                break;

            case 6:
                printf("Nombre de clients: %d\n", compterClients(tete));
                break;

            case 7:
                printf("ID: "); scanf("%d", &id);
                printf("Nouveau nom: "); scanf("%s", nom);
                modifierNomClient(tete, id, nom);
                break;
        }

    } while (choix != 0);

    libererListe(tete);
    return 0;
}

}
Editor is loading...
Leave a Comment