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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| #include <stdio.h>
#include <stdlib.h>
typedef struct {
int reel;
int img;
} t_complex;
typedef struct {
unsigned short degre;
t_complex coeff;
}t_monome;
typedef struct s_noeud{
t_monome monome;
struct s_noeud* next;
}t_noeud;
typedef struct{
t_noeud *first;
}t_liste;
void liste_init(t_liste *l)
{
l->first = NULL;
}
t_noeud *noeud_ajout(unsigned short degre, int coeff)
{
t_noeud *monome;
//allocation mémoire
if((monome = malloc(sizeof(t_noeud))) == NULL)
{
return NULL;
}
//remplissage
monome->degre = degre;
monome->coeff= coeff;
return monome;
}
t_liste *liste_insere(t_liste *liste, t_noeud *monome)
{
t_noeud *courant;
if(monome == NULL){
return NULL;
}
//Quand la liste est vide
if(liste->first == NULL)
{
liste->first = monome;
return liste;
}
//pour le premier élément
if(monome->degre > liste->first->degre) //Ici je cherche à placer un monome de degré supérieur à l'élément premier de la liste
{
monome->suivant = liste->first;
liste->first = monome;
return liste;
}
//J'insère des monomes en remontant la liste tout en cherchant à trier le polynome en placant les monomes de degré dans l'ordre décroissant
for (courant = liste->first; courant->next != NULL && courant->next->degre > monome->degre; courant = courant->next){
monome->next = courant->next;
courant->next = monome;
return liste;
}
}
void liste_affiche(t_liste * liste)
{
if (liste == NULL)
{
exit(EXIT_FAILURE);
}
t_noeud *courant = liste;
printf("Polynome :");
while(courant != NULL)
{
printf("%dx^%d + ",courant->coeff, courant->degre);
courant = courant->next;
}
printf("\n");
}
int main()
{
t_liste liste;
liste_init(&liste);
liste_affiche(&liste);
//insertion de monome
liste_insere(&liste, noeud_ajout(1,2-i));
liste_insere(&liste, noeud_ajout(3,3-i));
liste_insere(&liste, noeud_ajout(4,1-i));
liste_insere(&liste, noeud_ajout(2,6-i));
liste_insere(&liste, noeud_ajout(0,3-i));
return 0;
} |
Partager