المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : Exercice avec la solution en C les piles


سارق الأحزان
2014-04-13, 20:56
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.



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;
}

abderahim-dz
2014-04-18, 17:51
quel année stp cette exercice ?