• Aucun résultat trouvé

Série n°3 : Piles-Files Exercice1

N/A
N/A
Protected

Academic year: 2022

Partager "Série n°3 : Piles-Files Exercice1"

Copied!
3
0
0

Texte intégral

(1)

Université Cadi Ayyad Programmation II Faculté Polydisciplinaire de Safi Filière SMI (S4)

2019 - 2020

Série n°3 : Piles-Files

Exercice1

Pour créer une file à l'aide d'une liste chainée, on se propose d'utiliser un pointeur sur le début de la liste et un autre sur sa fin.

Une file sera donc définie par:

typedef struct element {

int val;

struct element* suivant;

} element; /*élément de la file*/

Typedef struct {

element* debut; /*Pointeur vers premier élément de la file*/

element* fin; /*Pointeur vers dernier élément de la file*/

} File;

Ecrire des fonctions en C qui permettent de :

 enfiler un élément

 défiler un élément,

 récupérer la tête de la file,

 vider le contenue de la file

Exercice2

Ecrire un programme complet en C qui permet

1. d'empiler/dépiler un élément de type int (ou double, char ou chaine de caractères) dans une pile, 2. d'afficher les valeurs d'une pile,

3. de calculer la longueur d'une pile,

4. de calculer la somme et le produit des éléments d'une pile, 5. de rechercher le maximum et le minimum d'une pile

(2)

Université Cadi Ayyad Programmation II Faculté Polydisciplinaire de Safi Filière SMI (S4)

2019 - 2020

Exercice3

Ecrire une fonction qui permet d’inverser une file à l’aide d’une pile.

Exercice 4

On se propose de se servir une pile pour calculer une expression arithmétique exprimé en notation polonaise inversée, dont voici un exemple:

3 12 3 – 3 / 1 - * L'expression infixée équivalente qui utilise des parenthèses est :

3*(((12-3)/3)-1)

Ecrire un algorithme qui calcul le résultat d'une expression arithmétique postfixée.

Les données seront comme une suite de caractères. Chaque donnée est séparée des autres par le caractère espace. La méthode consiste à utiliser une pile pour conserver les valeurs numériques au fur et à mesure de leur lecture, et à effectuer un traitement quand un opérateur est lu.

Ce traitement doit dépiler les deux dernières valeurs présentes dans la pile, effectuer l'opération, puis empiler le résultat.

Le résultat final est contenu dans la pile. Noter que les opérations acceptées sont -, +, *, /.

Exercice 5

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, enfiler, defiler et les opérations suivantes :

defilerenfiler : Defile le premier élément de la première file et l’ajoute à la deuxième file.

Comparer : Retourne 1 si le premier élément de la première file et plus grand ou égal au premier élément de la deuxième file et 0 sinon.

1. Définir les fonctions filevide, emfiler, defiler, defilerenfiler et comparer.

2. Ecrire un programme de tri qui utilise seulement ces opérations, et 3 files. La file1 contiendra

les entiers a trier, file 2contiendra les entiers tries après exécution, et la file 3 pourra servir de

file auxiliaire

(3)

Université Cadi Ayyad Programmation II Faculté Polydisciplinaire de Safi Filière SMI (S4)

2019 - 2020

Références

Documents relatifs

Useful to make sure files are identical, DIR Sorted current or declared directory files with sizes and disk space used and remaining are displayed on console with this command..

Then insert the newly created CP/M operations diskette in disk drive A, and insert the NEVADA SOFTWARE distribution diskette in drive Band type (ctl-c) to

[r]

Dans chacune de ces deux suites, on choisit les deux premiers termes qui sont des nombres entiers strictement positifs. puis on calcule le k -ième terme ( k > 2) en soustrayant le

Q₂ Déterminez la plus petite valeur possible du premier terme de la suite n°2 de sorte que celle-ci ait le plus grand nombre possible de termes égal à 21 avec un dernier terme égal

Q₂ Déterminez la plus petite valeur possible du premier terme de la suite n°2 de sorte que celle-ci ait le plus grand nombre possible de termes égal à 21 avec un dernier terme égal

Dans chacune de ces deux suites, on choisit les deux premiers termes qui sont des nombres entiers strictement positifs puis on calcule le k ème terme (k >2) en soustrayant le (k

SpaceHeader: TYPE = RECORD [ link: POINTER TO SpaceHeader, segment: DataSegmentHandle];. InitSpace: