Vous êtes sur la page 1sur 5

#include <stdio.

h>
#include <stdlib.h>

typedef struct mail


{
int valeur;
int idi;
int idc;
struct mail * suiv;
}elt;

typedef struct Liste


{
struct mail * deb ;
}liste;
void inserer(liste *l ,int k ,int j ,int e)
{
elt * m = malloc(sizeof*m);
m->idc=j;
m->idi=k;
m->valeur = e;
if(l->deb==NULL )//|| (k<(*l)->k ))//|| (k ==(*l)->k && j<(*l)->j))
{
m->suiv =l->deb;
l->deb = m;
}
else
{
elt * p = l->deb;
while(p->suiv != NULL && (p->suiv->idi<k || (p->suiv->idi == k && p->suiv-
>idc < j)))
{
p = p->suiv;
}
m->suiv = p->suiv;
p->suiv = m;
}
}
void afficher(liste *l ,int nbrel,int nbrec)
{
int i ;
int j ;
for (i = 0 ; i< nbrel ; i++)
{
for(j = 0 ; j < nbrec ; j++)
{
if (l->deb != NULL && l->deb->idi == i && l->deb->idc == j)
{
printf("%d\t", l->deb->valeur);
l->deb = l->deb->suiv;
}else
{
printf("0\t");
}
}
printf("\n");
}
}
void afficher2(liste * l, liste * h ,int nbrel,int nbrec)
{
int i;
int j;
for(i = 0; i<nbrel;i++)
{
for (j=0; j<nbrec;j++)
{
if((l->deb != NULL && l->deb->idi == i && l->deb->idc == j) &&(h->deb !
= NULL && h->deb->idi == i && h->deb->idc == j))
{
l->deb->valeur = l->deb->valeur + h->deb->valeur;
printf("%d\t",l->deb->valeur);
l->deb = l->deb->suiv;
h->deb = h->deb->suiv;
}
else if(l->deb->valeur != NULL && h->deb->valeur == NULL)
{
l->deb->valeur = l->deb->valeur;
printf("%d\t",l->deb->valeur);
l->deb = l->deb->suiv;
h->deb = h->deb->suiv;
}
else if (l->deb->valeur == NULL && h->deb->valeur!= NULL)
{
l->deb->valeur = h->deb->valeur;
printf("%d\t",l->deb->valeur);
l->deb = l->deb->suiv;
h->deb = h->deb->suiv;
}
else
{
printf("0\t");
}

}
printf("\n");
}
}
elt * lire(liste *L,int i ,int j)
{
elt * p = L->deb;
while((p!=NULL && p->idi <i )|| (p->idi == i && p->idc < j))
{
p=p->suiv;
}
if (p->idi == i && p->idc == j && p->valeur != NULL)
{
return p->valeur;
}
else
{
return NULL;
}
}
void * Modifier(liste * L,int i ,int j,int e)
{
elt * p = L->deb;
while((p!=NULL && p->idi <i )|| (p->idi == i && p->idc < j))
{
p=p->suiv;
}
if(e!=0 && p->valeur != NULL)
{
elt * q = e;
e = p ->valeur;
p->valeur = q;
}
else if ( e!= 0 && p->valeur == NULL)
{
elt * q = e;
e = p->valeur;
p->valeur = q;

}
else if(e == 0 && p->valeur != NULL)
{
elt *q = e;
e = p ->valeur;
p->valeur = q;
}
else if(e == 0 && p->valeur == NULL)
{
elt *q = e;
e = p->valeur;
p->valeur = e;
}

}
void * supprimervaleur(liste * L ,int e)
{
elt * p = L->deb;
while( p != NULL && p->valeur != e )
{
p = p->suiv;
if(p->valeur == e)
{
p->valeur = NULL;
p = p->suiv;
}

}
void * supprimerindice(liste *L,int i ,int j)
{
elt * p = L ->deb;
while( p!= NULL && p->idi<i || (p->idi == i && p->idc < j))
{
p = p->suiv;
if ( p->idi == i && p->idc == j)
{
p->valeur = NULL;
}
}
}

/*liste * additionner(liste * L,liste * H)


{
elt * p = L->deb;
elt * q = L->deb;
liste * Liste;
while (p != NULL && q != NULL )//&& p->idc < nbrec && p->idi < nbrel)
{
if (p->valeur == NULL && q->valeur == NULL)
{
p->valeur = NULL;
Liste ->deb = p;
}
else
{
p->valeur = p->valeur + q->valeur;
Liste->deb = p;
}
p = p->suiv;
q = q->suiv;
}
return Liste;
}*/
/*int comptage(liste *L)
{
elt * n = L->deb;
int z;
int i = 1;
while( n != NULL && n->valeur != NULL)
{
n = n->suiv;
}
i++;
printf("le nombre d'élément non nuls est: %d\t" ,i);

}*/
int main()
{
liste * L = NULL;
liste * H = NULL;
liste * l = NULL;
int n = 2;
int p = 2;
int c;
int e;
int a;
inserer(&L,0,0,1);
inserer(&L,0,1,14);
inserer(&L,1,0,8);
inserer(&L,1,1,7);
inserer(&H,0,0,4);
inserer(&H,0,1,10);
inserer(&H,1,0,5);
inserer(&H,1,1,2);
//l = additionner(&L,&H);
//afficher(&l,n,p);
afficher2(&L,&H,n,p);
/*inserer(&L,1,1,3);
inserer(&L,2,2,5);
inserer(&L,3,3,7);
inserer(&L,0,2,7);
inserer(&L,1,3,7);*/
//a = lire(&L,3,1);
//printf("la valeur lue est : %d\t ", a);
//printf("\nvoici votre Matrice creuse avant modification : \n");
//afficher(&H,n,p);
//c = comptage(&L);
//printf("\n%d\t ", c);
//supprimervaleur(&L,7);
//afficher(&L,n,p);
/*Modifier(&L,3,3,85);
Modifier(&L,0,2,90);
Modifier(&L,3,1,15);
a = lire(&L,3,1);
printf("\nla valeur lue est : %d\t ", a);
printf("\napres modification :\n");
afficher(&L,n,p);*/
return 0;
}

Vous aimerez peut-être aussi