0% ont trouvé ce document utile (0 vote)
63 vues2 pages

TP3

Le document présente une série d'exercices sur la manipulation de structures de données telles que les piles et les files. Il inclut des tâches comme la vérification des palindromes, la gestion des éléments dans une pile avec priorité, et le tri d'une file d'entiers. Chaque exercice demande la définition de structures et de fonctions spécifiques pour réaliser les opérations demandées.

Transféré par

mouadsajim03
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
63 vues2 pages

TP3

Le document présente une série d'exercices sur la manipulation de structures de données telles que les piles et les files. Il inclut des tâches comme la vérification des palindromes, la gestion des éléments dans une pile avec priorité, et le tri d'une file d'entiers. Chaque exercice demande la définition de structures et de fonctions spécifiques pour réaliser les opérations demandées.

Transféré par

mouadsajim03
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd

Exercice 1 :

Un palindrome est une chaine de caractères qui se lit de la même manière de gauche à
droite et de droite à gauche. En utilisant une pile écrire un programme qui permet de vérifier
si une chaine de caractère est palindrome.

Exemple : AZIZA est palindrome.

Mohammed n’est palindrome.

Exercice 2 :

Définir une structure pile à l’aide d’un tableau d’entiers de N éléments au maximum et un
sommet. On considérera que N est une constante donnée.

1. Ecrire les fonctions suivantes :

- pile * InitialiserPile() ; qui crée et initialise une pile vide,

- int pileVide(pile p ) ; qui retourne 1 si la pile est vide et 0 sinon,

- int depiler(pile *p) ; qui retourne le dernier élément après l’avoir retiré de la pile,
- void empiler(pile *p , int elt) ; qui empile l’élément elt,

- int SommetPile(pile p) ; qui retourne le sommet de la pile.

On se donne trois piles P1, P2 et P3. La pile P1 contient une suite de nombres entiers
positifs.

2. Ecrire une fonction pour déplacer(pile p1, pile*p2) les entiers de P1 dans P2 de façon à
avoir dans P2 tous les nombres pairs au-dessus des nombres impairs.

3. Ecrire une fonction pour copier(pile p1, pile*p2) dans P2 les nombres pairs contenus
dans P1. Le contenu de P1 après exécution de l’algorithme doit être identique à celui avant
exécution. Les nombres pairs doivent être dans P2 dans l’ordre ou ils apparaissent dans P1.

Exercice 3 :

On se donne une file d’entiers que l’on voudrait trier avec le plus grand élément en fin de
file. On n’est autorisé à utiliser que la fonction fileVide(File*F), emfiler (File*F, int elm),
defiler (File*F) et les opérations suivantes:

- defilerEnfiler(File*F, File*F1) : Défile le premier élément de la première file et l’ajoute à la


deuxième file.

- comparer (File*F, File*F1): Retourne 1 si le premier élément de la première file est plus
grand ou égal au premier élément de la deuxième file et 0 sinon.
1. Définir les fonction fileVide , emfiler, defiler , defilerEnfiler et comparer.

2. Donner un algorithme de tri (File*F1, File*F2) qui utilise seulement ces opérations et 3
files. La file F1 contiendra les entiers à trier, file F2 contiendra les entiers triés après
exécution et la file F3 pourra servir de file auxiliaire.

Exercice 4: pile et élément avec priorité

On suppose que tout élément est muni d’une priorité strictement positive représentée par

un entier qui doit être précisé au moment de l’ajout de l’élément dans la pile. La fonction

retirer doit chercher l’élément le plus prioritaire. On s’intéresse à une implémentation

efficace des opérations (ajouter et retirer). Chaque élément de la pile sera défini par la
structure de donnée suivante :

typedef struct elt {

int priorite ; // priorite représente la priorité de l’élément de type entier

char donnee ; // donnée porte une valeur de type char

} element

1- Donner les structures de données pour manipuler la pile.

2- Donner une implémentation des fonctions ajouter et retirer dans les deux cas suivants :

A- la fonction ajouter range les éléments dans un ordre quelconque. Ce qui implique que la
fonction retirer doit parcourir la pile pour extraire les éléments jusqu’à elle arrive à
l’élément prioritaire puis elle doit rendre les éléments retirés dans le même ordre avant
l’extraction.

B- la fonction ajouter maintient les éléments par ordre de priorité croissante.

3- Ecrire la fonction main pour tester les différentes fonctions.

Vous aimerez peut-être aussi