Vous êtes sur la page 1sur 7

Correction tp 4

Exercice 1 : Liste Chainée

#include <stdio.h>

#include <stdlib.h>

1)

struct ELEMENT {

int entier;

ELEMENT *suivant;

};

struct LISTE

ELEMENT *premier;

ELEMENT *dernier;

ELEMENT *courant;

};

2)

void init_liste(LISTE *l){

l->premier=NULL;

l->dernier=NULL;

l->courant=NULL;

3)

int liste_vide(LISTE *l){

return (l->premier==NULL);

4)

void inserer_tete(LISTE *l, ELEMENT *e)

1
e->suivant=l->premier;

l->premier=e;

if (l->dernier==NULL)

l->dernier=e;

5)

void ouvrir_liste(LISTE *l)

l->courant=l->premier;

6)

int fin_liste(LISTE *l)

return(l->courant==NULL);

7)

ELEMENT *element_courant(LISTE *l)

ELEMENT *ptc;

ptc=l->courant;

if (l->courant != NULL)

l->courant=l->courant->suivant;

return ptc;

8)

void afficher_liste(LISTE l)

ELEMENT *ptc;

ouvrir_liste(&l);

2
while (!fin_liste(&l))

ptc=element_courant(&l);

printf("%d \t", ptc->entier);

9)

void saisir_elmt(ELEMENT *e)

printf("\n saisir l'entier \t");

scanf ("%d", &e->entier);

10)

void remplir_liste_tete(LISTE *l, int n)

ELEMENT *e;

for (int i=1; i<=n; i++)

e=(ELEMENT*)malloc(sizeof(ELEMENT));

saisir_elmt(e);

inserer_tete(l,e);

11)

void element_premier(LISTE *l)

if (!liste_vide(l))

printf(" \n le premier element de la liste est %d \n", l->premier->entier);

3
12)

void dernier_liste (LISTE *l)

if (!liste_vide(l))

printf (" \n le dernier element de la liste est %d \n", l->dernier->entier);

13)

void position(LISTE l, int k)

int p=0;

ELEMENT *ptc;

ouvrir_liste(&l);

while (!fin_liste(&l) && p!=k)

p++;

ptc=element_courant(&l);

printf("l'element est %d \t", ptc->entier);

14)

int longueur(LISTE *l)

int lg=0;

ouvrir_liste(l);

while(!fin_liste(l))

if (l->courant != NULL)

lg++;

4
l->courant=l->courant->suivant;

return lg;

15)

int occurence (LISTE *l, int x)

int nb=0;

ELEMENT *ptc;

ouvrir_liste(l);

while (!fin_liste(l))

ptc=element_courant(l);

if (ptc->entier == x)

nb++;

return nb;

16)

int maximum(LISTE *l)

ELEMENT *ptc;

int max=0;

ouvrir_liste(l);

while (!fin_liste(l))

ptc=element_courant(l);

if (ptc->entier >= max)

5
max=ptc->entier;

return max;

17)

void main(){

LISTE L;

int p, lg, n, x, occ, maxim;

printf ("Saisir la taille de la liste");

scanf ("%d", &n);

init_liste(&L);

remplir_liste_tete(&L, n);

afficher_liste(L);

lg= longueur(&L);

printf (" \nla liste possede %d elements \n", lg);

element_premier(&L);

dernier_liste(&L);

printf ("saisir la position");

scanf ("%d", &p);

position (L, p);

printf ("\n saisir x \n");

scanf ("%d", &x);

occ= occurence (&L, x);

maxim=maximum (&L);

printf ("\n Le nombre d'occurence de %d = %d", x, occ);

printf ("\n Le maximum = %d\n ", maxim);}

Vous aimerez peut-être aussi