-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpile.h
72 lines (49 loc) · 1.59 KB
/
pile.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#ifndef PILE_H
#define PILE_H
#include "listes.h"
////// DEFINITION DES TYPES POUR LA PILE //////
// Valeur d'une cellule de pile
typedef struct valeur {
int est_int; //vaut 0 si groupe de commandes
//vaut 1 si int
int v_int;
sequence_t groupe; // groupe de commandes imbriqué
} val;
// Cellule de pile pour stocker les opérations, mesures, programmes, etc...
typedef struct cel {
val valeur;
struct cel *suivant;
} cellule_pile;
// Type de la pile
typedef struct {
cellule_pile *tete;
} pile;
////// FONCTIONS LIEES A LA PILE //////
/* Ajout d'un élément en haut de la pile */
void empiler(pile *p, val valeur);
/* Dépile et renvoie l'element au sommet */
val depiler(pile *p);
/* Dépile et renvoie l'élément en fin de pile */
val depiler_fin(pile *p);
/*
* Inversion de la pile
* a1,a2,...,an devient an,an-1,...,a1
*/
void inverser_pile (pile *l);
/* Libère la mémoire allouée à chaque cellule de la pile, et à la pile elle même*/
void liberer_pile(pile *p);
/* Echange les 2 elements au sommet entre eux */
void echanger(pile *p);
/* Clone l'element au sommet de la pile */
void cloner(pile *p);
/* Deplace l'element d'indice n au sommet */
void deplacer(pile *p, int n);
/* Effectue x rotations des n premiers elements */
void rotation(pile *p, int n, int x);
/* Execute un groupe de commandes */
int exec_groupe_commandes(val *cmd1, val *cmd2, val *valeur, bool debug);
/* Affiche la valeur d'une cellule de la pile */
void afficher_valeur_cellule(val valeur);
/* Affiche les éléments de la pile */
void afficher_pile(pile *p);
#endif