On se donne une pile (représentation chainée) P1 contenant des entiers positifs, écrire en langage C
une fonction qui permet de déplacer les éléments deP1 dans une pile P2 de façon à avoir dans P2 tous
les nombres pairs au dessous des nombres impairs.
كود PHP:
Solution 1
pile * deplacer(pile * p){
pile * p_nouveau, * tmp, *q;
q = NULL;
tmp = p;
while(tmp != NULL){
if (tmp->donnee % 2 == 0){
p_nouveau = (pile*) malloc(sizeof (pile));
if (p_nouveau != NULL) {
p_nouveau->donnee = tmp->donnee;
p_nouveau->precedent = q;
q = p_nouveau;
}
}
tmp = tmp->precedent;
}
tmp = p;
while(tmp != NULL){
if (tmp->donnee % 2 != 0){
p_nouveau = (pile*) malloc(sizeof (pile));
if (p_nouveau != NULL) {
p_nouveau->donnee = tmp->donnee;
p_nouveau->precedent = q;
q = p_nouveau;
}
}
tmp = tmp->precedent;
}
return q;
}
Solution 2 (utilisation des fonctions empiler et depiler)
pile * deplacer(pile * p){
pile * p_nouveau, * tmp, *q, *t;
int x;
q = NULL;
t = NULL;
while(!est_vide(p)){
x = depiler(&p);
if (x % 2 == 0)
q = empiler(q, x);
else
t = empiler(t, x);
}
while(!est_vide(t)){
x = depiler(&t);
q = empiler(q, x);
}
return q;
}
quel année stp cette exercice ?