0% ont trouvé ce document utile (0 vote)
115 vues10 pages

Untitled

Transféré par

rihab KATIB
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
115 vues10 pages

Untitled

Transféré par

rihab KATIB
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

int verifier (liste *tete)

{
if (tete == 0)
return 0;
else
return 1;
}

mlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlml

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>

struct liste
{
int val;
struct liste *suivant;
};

int verif(struct liste *tete)


{
if (tete == NULL)
{
return 1;
}
else
{
return 0;
}
}

struct liste *ajouterdebut(struct liste *q)


{
struct liste *nouveau = malloc(sizeof(struct liste));
printf(" ------- vous etes entrenne d'ajouter au debut de la liste ");
printf("\n donner la valeur ");
scanf("%d", &(nouveau->val));
nouveau->suivant = q;
return nouveau;
}

struct liste *ajouterfin(struct liste *z)


{
struct liste *nouveaumailon = malloc(sizeof(struct liste));
printf("--- entre le nouveau element a la fin \n");
printf("\n donner la valeur");
scanf("%d", &(nouveaumailon->val));
if (z == NULL)
{
nouveaumailon->suivant = NULL;
z = nouveaumailon;
return nouveaumailon;
}
else
{
while (z->suivant != NULL)
{
z = z->suivant;
}
nouveaumailon->suivant = NULL;
z->suivant = nouveaumailon;
return z;
}
}

int comptabiliser( struct liste *f)


{
int cpt = 0;
int v =verif(f);
if (v == 1)
{
printf("votr liste est vide ");
return cpt;
}
else
{
struct liste *p;
p = f;
while (p != NULL)
{
cpt++;
p = p->suivant;
}
}

return cpt;
}

void recherche(struct liste *tete)


{ struct liste*ptr=tete;
int s=0;
int x;
printf(" entrer la valeur cherch� ");
scanf("%d",&x);
while (ptr!=NULL){
if (ptr->val==x){
printf("----------element existe----------\n");
s=1;

}
ptr=ptr->suivant;
}
if (s==0){
printf("--------element n'existe pas -----------\n");
}
}

struct liste *ajouteposition(struct liste*h )


{
int i,pos,x;
i=1;
struct liste *nouveau = malloc(sizeof(struct liste));
struct liste *pro=h;
x=comptabiliser(h);
do {
printf(" entrer la position ou vous voullez ajouter la nouvelle maillon \
n");
scanf("%d",&pos);
} while(pos<1||pos>x+1);

if (pos==1) {
h=ajouterdebut(h);
} else if(pos==(x+1)) {
h= ajouterfin(h);
} else {
printf("entrer la valeure");
scanf("%d",&nouveau->val);
while(i != (pos-1)) {
h=h->suivant;
i=i+1;
}
nouveau->suivant=h->suivant;
h->suivant=nouveau;
}
return h;
}
struct liste* supprimer(struct liste* w)
{
int pos, i, x;
i = 1;

struct liste* o = w;
struct liste* k = w;
x = comptabiliser(w);

do {
printf("Entrer la position que vous voulez supprimer : ");
scanf("%d", &pos);
} while ( (pos < 1) ||( pos > (x + 1)));

if (pos == 1) {
w = w->suivant;
free(o);
return w;
} else {
while (i != pos) {
o = k;
k = k->suivant;
i = i + 1;
}

o->suivant = k->suivant;
free(k);
return w;
}
}

struct liste *creeuneliste(struct liste *l)


{
struct liste *ptr = l;
char rep[10];
printf("\n\n\n ------------------------------welcome sir you are going now to
build your liste--------------- --------------- \n");
do
{
printf("donner votre nouvelle vaaleur ");
scanf("%d", &ptr->val);
printf("vous voullez continuer? (si oui presse y) ");
scanf("%s", rep);
if ((rep[0] == 'y') || ( rep[0] == 'Y') )
{
ptr->suivant = malloc(sizeof(struct liste));
ptr = ptr->suivant;
}
else
{
ptr->suivant = NULL;
}
} while (rep[0] == 'y' || rep[0] == 'Y');
return l;
}
void afficher(struct liste *r)
{
if (r == NULL)
{
printf("\n\n ------ Listes des valeurs est vide -----\n\n");}
else
{
printf("\n\n ------ Listes des valeurs -----\n\n");
while (r != NULL)
{
printf("* %d * \n", r->val);
r = r->suivant;
}
}
}

struct liste*detruire_liste( struct liste*z)


{
struct liste *n;
while (z != NULL)
{
n = z;
z = z->suivant;
free(n);
}

return NULL;

}
void end(struct liste*r)
{
printf("\n\n\n------- thank you sir that's was great to create this programme
---------\n -----directed by :\n\------");
}
int main()
{

int pos;
int x;
struct liste *tete = NULL;
tete = malloc(sizeof(struct liste));
struct liste *ptr = tete;
tete = creeuneliste(tete);
afficher(tete);
ptr=ajouteposition(ptr);
afficher(tete);
tete = ajouterdebut(tete);
afficher(tete);
ptr = ajouterfin(ptr);
afficher(tete);
x=comptabiliser(tete);
printf(" la taille de votr liste est %d\n",x);

recherche(tete);
tete=supprimer(tete);
afficher(tete);
tete=detruire_liste(tete);
afficher(tete);
end(tete);

return 0;
}

bideractionelle
-----------------------------------------------------------------------------------
----------------------

/*--------------------------------------------- biderectionele
--------------------------------------------------------------------------------*/
/*

void verif(Liste L)
{
if ((L.head==NULL) || (L.taille==0))
printf("la liste est vide \n");
else printf("la liste n'est pas vide \n");
}

void create(Liste *liste)


{
Element *temp,*p;
p=NULL;
temp=NULL;
int i;

for(i=0;i<liste->taille;i++)
{
temp=malloc(sizeof(Element));
printf("rentrez la valeur de l'element num %d \n ",i+1);
scanf("%d",&temp->valeur);
temp->suivant=NULL;
temp->precedent=NULL;

if (liste->head==NULL)
{
liste->head=temp;

}
else
{
p=liste->head;
if(p->suivant == NULL)
{
p->suivant = temp;
temp->precedent = p;
}
else
{
while (p->suivant!=NULL)
{
p=p->suivant;
}
p->suivant=temp;
temp->precedent=p;
}
}
}
}

void affichage(Liste liste)


{ int i;

Element *p;
p=NULL;
p=liste.head;

for(i=0;i<liste.taille;i++)
{
printf("la valeur de l'element num %d : %d \n",i+1,p->valeur);
p=p->suivant;

if (liste.head==NULL)printf("liste vide \n\n");


}

void ajoutdebut(Liste *liste,int x)


{
Element *q;

q=malloc(sizeof(Element));
q->valeur=x;
q->suivant=NULL;
q->precedent=NULL;
if (liste->head==NULL) // ou taille = 0;
{
liste->head=q;
}
else
{
q->suivant=liste->head;
liste->head=q;
}
liste->taille=liste->taille+1;
}

void ajoutfin(Liste *liste,int val)


{
Element *p,*q;
q=NULL;
p=NULL;

if (liste->taille == 0)
{
ajoutdebut(liste,val);
}
else
{
q=malloc(sizeof(Element));
q->valeur=val;
q->suivant=NULL;
q->precedent=NULL;
p=liste->head;
while (p->suivant!=NULL)
{
p=p->suivant;
}
p->suivant=q;
q->precedent=p;
liste->taille++;
}
}

void ajoutposition(Liste *liste,int val,int pos)


{

int i;
Element *p,*q,*t;
p=NULL;
q=NULL;
t=NULL;

q=malloc(sizeof(Element));
q->valeur=val;
q->suivant=NULL;

if (pos> liste->taille+1 )
{printf("ERREUR aucun element dans cette position \n\n");
return;}
else if (pos==1){ajoutdebut(liste,val); return;}
else if (pos==liste->taille+1){ajoutfin(liste,val);return;}
else
{
p=liste->head;
for(i=1;i<pos;i++)
{
t=p;
p=p->suivant;

}
t->suivant=q;
q->precedent=t;
q->suivant=p;
p->precedent=q;
liste->taille++;

}
void trierliste(Liste *liste)
{
int i, j, n, m;
Element *p, *q;

q= NULL;
p= NULL;
n= liste->taille;
q= liste->head;

for (i=0;i<n - 1; i++)


{
p = q->suivant;
for (j = i + 1; j < n; j++)
{
if (p->valeur < q->valeur)
{
m = q->valeur;
q->valeur = p->valeur;
p->valeur = m;
}
p = p->suivant;
}
q = q->suivant;
}
}

void ajout_trie(Liste *liste,int val)


{
Element *p,*q,*r;
p=NULL;
q=NULL;
r=NULL;

if(liste->head->valeur > val || liste->head == NULL)


{
ajoutdebut(liste,val);
}
else
{ p=liste->head;
q=malloc(sizeof(Element));
q->valeur=val;
q->suivant=NULL;

while((p!=NULL) && (p->valeur < val))


{
r=p;
p=p->suivant;}

if(p==NULL){ajoutfin(liste,val);return;}

q->precedent=r;
p->precedent=q;
r->suivant=q;
q->suivant=p;
liste->taille++;
}

void recherche(Liste liste,int val)


{
Element *p;
bool trouv;
trouv=false;
if (liste.taille == 0)
{
printf("liste vide \n");
return;
}
else
{
p=liste.head;
while(p!=NULL && trouv==false )
{

if (p->valeur==val){trouv=true;}
p=p->suivant;
}
}
if (trouv==true) {printf("l'élement se trouve dans la liste \n");}
else {printf("l'élement ne se trouve pas dans la list \n ");}
}

void compter(Liste liste)


{
int s;
Element *p;
p=NULL;
p=liste.head;
s=0;
while(p!=NULL)
{
p=p->suivant;
s=s+1;
}
printf("nombre d'elements : %d \n\n",s);
}

void detruire(Liste *liste)


{ int i;
Element *p,*q;
p=liste->head;
for(i=0;i<liste->taille;i++)
{ q=p;
p=p->suivant;
free(q);
}
liste->head=NULL;
liste->taille=0;

void supppos(Liste *liste, int pos)


{ Element *p,*q;
if (liste->taille==0||pos >liste->taille) {
printf("ERREUR : position invalide\n\n");
return;
}

p=liste->head;
if (pos==1) {
liste->head=p->suivant;
if (liste->head!=NULL) {
liste->head->precedent=NULL;
}
free(p);
} else {
q=NULL;
int i;
for (i=1;i<pos;i++) {
q=p;
p=p->suivant;
}
q->suivant=p->suivant;
if (p->suivant!=NULL) {
p->suivant->precedent=q;
}
free(p);
}
liste->taille--;
}
*/

Vous aimerez peut-être aussi