TP3 - Les listes chaînées

Durée : 3h

Inès de Courchelle, Elisabeth Ranisavljevic

Objectifs :

  • Étudier des structures de données liées
  • Connaître les particularités des chaînes
  • Appréhender des notions de gestion de données

Attention :

À chaque étape de programmation, vous devez vérifier si le programme :

  • Compile sans warning
  • Obtient les résultats attendus
  • Avant de coder, il faut écrire un algo avec un papier et un stylo !

    logo

Exercice 1 : La préparation

  1. Créer les fichiers suivants :
  • liste.h
  • liste.c
  • main.c
  1. Créer le squelette du programme

liste.h

#ifndef LISTES_H
#define LISTES_H

/* Le prototype/signature de toutes mes fonctions/procédures */

#endif

liste.c

#include "liste.h"
/* corps des différentes fonctions/procédures */

main.c

#include <stdio.h>
#include "liste.h"

int main(){
    printf("C'est la liste !");
    return 0;
}

Exercice 2 : Les basiques

  1. Déclarer une structure liste chaînée contenant un maillon d’entier
  2. Coder les fonctionnalités suivantes :
maillon* creerMaillon(int donnee);
teteListe ajouterTete(teteListe maListe, int donnee);
void afficher(teteListe maListe);

Exercice 3 : Les avancées

  1. Coder les fonctions d’ajout suivantes :
teteListe ajouterFin(teteListe maListe, int donnee);
teteListe ajouterPos(teteListe maListe,int valeur,int pos);
  1. Coder les fonctions de suppression suivantes :
teteListe supprimerDebut(teteListe maListe);
teteListe supprimerFin(teteListe maListe);
teteListe supprimerPos(teteListe maListe,int pos);
teteListe viderListe(teteListe maListe);
  1. N’oublier pas de tester l’ensemble des fonctionnalités dans le main petit à petit

Exercice 4 : Les masters

  1. Écrire la procédure/fonction permettant de supprimer le premier nœud dont la valeur est égale à une valeur donnée

  2. Écrire la procédure/fonction permettant de supprimer tous les nœuds dont la valeur est égale à une valeur donnée

  3. Écrire la procédure/fonction permettant de rattacher la liste à elle-même. Par exemple, {10, 15, 20} devient {10, 15, 20, 10, 15, 20}.

  4. Écrire la procédure/fonction permettant de inverser la liste. Par exemple, {1, 4, 3, 8} devient {8, 3, 4, 1}.

  5. Écrire la procédure/fonction permettant de supprimer les doublons. Par exemple, {42, 24, 2, 2, 3, 24, 8} devient {42, 3, 8}.