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 73 74 75 76 77
|
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include "miniLib/my.h"
typedef struct Element Element;
struct Element
{
int nombre;
Element *suivant;
};
typedef struct Pile Pile;
struct Pile
{
Element *premier;
};
void pile_push(Pile *pile, int nvNombre)
{
Element *nouveau = malloc(sizeof(*nouveau));
if (pile == NULL || nouveau == NULL) {
exit(EXIT_FAILURE);
}
nouveau->nombre = nvNombre;
nouveau->suivant = pile->premier;
pile->premier = nouveau;
}
int pile_down(Pile *pile)
{
if (pile == NULL) {
exit(EXIT_FAILURE);
}
int nombreDepile = 0;
Element *elementDepile = pile->premier;
if (pile != NULL && pile->premier != NULL) {
nombreDepile = elementDepile->nombre;
pile->premier = elementDepile->suivant;
free(elementDepile);
}
return nombreDepile;
}
char polonais(Pile *pile, char const *str)
{
int nombre;
int i = 0;
str = my_strlen(str);
while (str[i] >= '0' && str[i] <= '9') {
i++;
pile_down(pile);
if (str[i] == "+") {
pile_down(pile);
}
else if (str[i] == '-') {
pile_down(pile);
}
if (str[i] == '*') {
pile_down(pile);
}
else if (str[i] == '\\') {
pile_down(pile);
}
if (str[i] == '%') {
pile_down(pile);
}
else if (str[i] == '\0') {
return (0);
}
}
} |
Partager