tp9
Anonymous
C++
04/21/2026 2:15 PM
4.2 KB
9
Indexable
Never
#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