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