tp7 exo3
This commit is contained in:
parent
0a2df4c9d3
commit
ba1c439c95
85
tp7/exo3.c
Normal file
85
tp7/exo3.c
Normal file
@ -0,0 +1,85 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
struct m_l_c_i {
|
||||
int valeur;
|
||||
struct m_l_c_i *suivant;
|
||||
};
|
||||
typedef struct m_l_c_i milc;
|
||||
|
||||
struct l_c_i {
|
||||
milc *debut;
|
||||
};
|
||||
typedef struct l_c_i ilc;
|
||||
|
||||
ilc creer_ilc() { return (ilc){NULL}; }
|
||||
milc *tete_ilc(ilc l) { return l.debut; }
|
||||
milc *suivant_ilc(milc m) { return m.suivant; }
|
||||
void inserer_ilc(ilc *l, milc *m, int x) {
|
||||
milc *parent = l->debut;
|
||||
while (x > 0) {
|
||||
parent = parent->suivant;
|
||||
}
|
||||
m->suivant = parent->suivant;
|
||||
parent->suivant = m;
|
||||
}
|
||||
void retirer_ilc(ilc *l, milc *m) {
|
||||
if (l->debut == m) {
|
||||
l->debut = m->suivant;
|
||||
}
|
||||
milc *parent = l->debut;
|
||||
while (parent->suivant != m) {
|
||||
parent = parent->suivant;
|
||||
}
|
||||
parent->suivant = m->suivant;
|
||||
free(m);
|
||||
}
|
||||
int acceder_ilc(milc m) {
|
||||
return m.valeur;
|
||||
}
|
||||
void modifier_ilc(milc *m, int x) {
|
||||
m->valeur = x;
|
||||
}
|
||||
void inserer_tete_ilc(ilc *l, int x) {
|
||||
milc* m = malloc(sizeof(milc));
|
||||
m->valeur = x;
|
||||
m->suivant = l->debut;
|
||||
l->debut = m;
|
||||
}
|
||||
int retirer_tete_ilc(ilc *l) {
|
||||
milc* m = l->debut;
|
||||
l->debut = m->suivant;
|
||||
int x = m->valeur;
|
||||
free(m);
|
||||
return x;
|
||||
}
|
||||
void inserer_fond_ilc(ilc *l, int x) {
|
||||
if (l->debut == NULL) {
|
||||
inserer_tete_ilc(l, x);
|
||||
} else {
|
||||
milc* parent = l->debut;
|
||||
while (parent->suivant != NULL) {
|
||||
parent = parent->suivant;
|
||||
}
|
||||
milc* m = malloc(sizeof(milc));
|
||||
m->valeur = x;
|
||||
m->suivant = NULL;
|
||||
parent->suivant = m;
|
||||
}
|
||||
}
|
||||
int retirer_fond_ilc(ilc *l) {
|
||||
milc* m;
|
||||
if (l->debut->suivant == NULL) {
|
||||
m = l->debut;
|
||||
l->debut = NULL;
|
||||
} else {
|
||||
milc* parent = l->debut;
|
||||
while (parent->suivant->suivant != NULL) {
|
||||
parent = parent->suivant;
|
||||
}
|
||||
m = parent->suivant;
|
||||
parent->suivant = NULL;
|
||||
}
|
||||
int x = m->valeur;
|
||||
free(m);
|
||||
return x;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user