update
This commit is contained in:
103
DEV.1.1/Piles_et_Files/fonct.c
Normal file
103
DEV.1.1/Piles_et_Files/fonct.c
Normal file
@@ -0,0 +1,103 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define MAX_SIZE 50
|
||||
|
||||
typedef struct {
|
||||
char tab[MAX_SIZE];
|
||||
int indice_debut;
|
||||
int indice_fin;
|
||||
int taille;
|
||||
} pile;
|
||||
|
||||
typedef struct maillon_s {
|
||||
char valeur;
|
||||
struct maillon_s* suivant;
|
||||
} maillon;
|
||||
|
||||
typedef struct {
|
||||
maillon* tete;
|
||||
maillon* queue;
|
||||
} file;
|
||||
|
||||
void push_pile(pile* p, char valeur) {
|
||||
if (p->taille < MAX_SIZE) {
|
||||
p->tab[p->taille++] = valeur;
|
||||
} else {
|
||||
printf("Erreur: pile pleine\n");
|
||||
}
|
||||
}
|
||||
|
||||
char pop_pile(pile* p) {
|
||||
if (p->taille > 0) {
|
||||
return p->tab[--p->taille];
|
||||
}
|
||||
printf("Erreur: pile vide\n");
|
||||
return '\0';
|
||||
}
|
||||
|
||||
int empty_pile(pile* p) {
|
||||
return p->taille == 0;
|
||||
}
|
||||
|
||||
void enqueue_file(file* f, char valeur) {
|
||||
maillon* nouveau = (maillon*)malloc(sizeof(maillon));
|
||||
if (nouveau == NULL) {
|
||||
printf("Erreur: allocation memoire\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
nouveau->valeur = valeur;
|
||||
nouveau->suivant = NULL;
|
||||
if (f->queue == NULL) {
|
||||
f->tete = f->queue = nouveau;
|
||||
} else {
|
||||
f->queue->suivant = nouveau;
|
||||
f->queue = nouveau;
|
||||
}
|
||||
}
|
||||
|
||||
char dequeue_file(file* f) {
|
||||
if (f->tete == NULL) {
|
||||
printf("Erreur: file vide\n");
|
||||
return '\0';
|
||||
}
|
||||
maillon* temp = f->tete;
|
||||
char valeur = temp->valeur;
|
||||
f->tete = f->tete->suivant;
|
||||
if (f->tete == NULL) {
|
||||
f->queue = NULL;
|
||||
}
|
||||
free(temp);
|
||||
return valeur;
|
||||
}
|
||||
|
||||
int empty_file(file* f) {
|
||||
return f->tete == NULL;
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
pile p = {{0}, 0, 0, 0};
|
||||
file f = {NULL, NULL};
|
||||
char ordre[2];
|
||||
|
||||
printf("La pile et la file attendent vos ordres \n > ");
|
||||
while (scanf("%1s", ordre) == 1) {
|
||||
if (ordre[0] == 'q') {
|
||||
printf("Au revoir\n");
|
||||
break;
|
||||
} else if (ordre[0] == '+') {
|
||||
scanf(" %c", &ordre[1]);
|
||||
push_pile(&p, ordre[1]);
|
||||
enqueue_file(&f, ordre[1]);
|
||||
} else if (ordre[0] == '-') {
|
||||
printf("Pop: %c\n", pop_pile(&p));
|
||||
printf("Dequeue: %c\n", dequeue_file(&f));
|
||||
} else {
|
||||
printf("Commande invalide\n");
|
||||
}
|
||||
printf("\nLa pile et la file attendent vos ordres \n > ");
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
70
DEV.1.1/Piles_et_Files/fonct_file.c
Normal file
70
DEV.1.1/Piles_et_Files/fonct_file.c
Normal file
@@ -0,0 +1,70 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
typedef struct maillon_s {
|
||||
char valeur;
|
||||
struct maillon_s* suivant;
|
||||
} maillon;
|
||||
|
||||
typedef struct {
|
||||
maillon* tete;
|
||||
maillon* queue;
|
||||
} file;
|
||||
|
||||
void enqueue_file(file* f, char valeur) {
|
||||
maillon* nouveau = (maillon*)malloc(sizeof(maillon));
|
||||
if (nouveau == NULL) {
|
||||
printf("Erreur: allocation memoire\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
nouveau->valeur = valeur;
|
||||
nouveau->suivant = NULL;
|
||||
if (f->queue == NULL) {
|
||||
f->tete = f->queue = nouveau;
|
||||
} else {
|
||||
f->queue->suivant = nouveau;
|
||||
f->queue = nouveau;
|
||||
}
|
||||
}
|
||||
|
||||
char dequeue_file(file* f) {
|
||||
if (f->tete == NULL) {
|
||||
printf("Erreur: file vide\n");
|
||||
return '\0';
|
||||
}
|
||||
maillon* temp = f->tete;
|
||||
char valeur = temp->valeur;
|
||||
f->tete = f->tete->suivant;
|
||||
if (f->tete == NULL) {
|
||||
f->queue = NULL;
|
||||
}
|
||||
free(temp);
|
||||
return valeur;
|
||||
}
|
||||
|
||||
int empty_file(file* f) {
|
||||
return f->tete == NULL;
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
file f = {NULL, NULL};
|
||||
char ordre[2];
|
||||
|
||||
printf("La file attend vos ordres \n > ");
|
||||
while (scanf("%1s", ordre) == 1) {
|
||||
if (ordre[0] == 'q') {
|
||||
printf("Au revoir\n");
|
||||
break;
|
||||
} else if (ordre[0] == '+') {
|
||||
scanf(" %c", &ordre[1]);
|
||||
enqueue_file(&f, ordre[1]);
|
||||
} else if (ordre[0] == '-') {
|
||||
printf("Dequeue: %c\n", dequeue_file(&f));
|
||||
} else {
|
||||
printf("Commande invalide\n");
|
||||
}
|
||||
printf("\nLa file attend vos ordres \n > ");
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
52
DEV.1.1/Piles_et_Files/fonct_pile.c
Normal file
52
DEV.1.1/Piles_et_Files/fonct_pile.c
Normal file
@@ -0,0 +1,52 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define MAX_SIZE 50
|
||||
|
||||
typedef struct {
|
||||
char tab[MAX_SIZE];
|
||||
int taille;
|
||||
} pile;
|
||||
|
||||
void push_pile(pile* p, char valeur) {
|
||||
if (p->taille < MAX_SIZE) {
|
||||
p->tab[p->taille++] = valeur;
|
||||
} else {
|
||||
printf("Erreur: pile pleine\n");
|
||||
}
|
||||
}
|
||||
|
||||
char pop_pile(pile* p) {
|
||||
if (p->taille > 0) {
|
||||
return p->tab[--p->taille];
|
||||
}
|
||||
printf("Erreur: pile vide\n");
|
||||
return '\0';
|
||||
}
|
||||
|
||||
int empty_pile(pile* p) {
|
||||
return p->taille == 0;
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
pile p = {{0}, 0};
|
||||
char ordre[2];
|
||||
|
||||
printf("La pile attend vos ordres \n > ");
|
||||
while (scanf("%1s", ordre) == 1) {
|
||||
if (ordre[0] == 'q') {
|
||||
printf("Au revoir\n");
|
||||
break;
|
||||
} else if (ordre[0] == '+') {
|
||||
scanf(" %c", &ordre[1]);
|
||||
push_pile(&p, ordre[1]);
|
||||
} else if (ordre[0] == '-') {
|
||||
printf("Pop: %c\n", pop_pile(&p));
|
||||
} else {
|
||||
printf("Commande invalide\n");
|
||||
}
|
||||
printf("\nLa pile attend vos ordres \n > ");
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
Reference in New Issue
Block a user