Allocation dynamique de la memoire, listes et pointeurs, la memoire artificielle

Description

Présentation de la mémoire artificielle et de l'allocation dynamique à travers un jeux simple (voir capture ecran) qui utilise les Listes en C++. Le code source est jeux.cpp. De plus, je propose la librairie List.h qui effectue un accès universel aux listes...

Source / Exemple :


// Librairie list.h 
void initliste (Tliste &l){ 
l.tete=NULL; 
l.ec=NULL; 
l.predec=NULL; 
} 

bool listevide(Tliste l){ 
return(l.tete= =NULL); 
} 

void entete(Tliste &l){ 
l.ec=l.tete; 
l.predec=NULL; 
} 

void suc(Tliste &l){ 
if (l.ec= =NULL){ 
//Erreur sur successeur} 
else{l.predec=l.ec;l.ec=l.ec ->s;} 
} 

void valec (Tliste l, int &val){ 
if(l.ec= =NULL){ 
//Erreur sur valeur} 
else{val=l.ec->v;} 
} 

void modifec (Tliste l, int val){ 
l.ec->v=val; 
} 

void supec (Tliste &l){ 
Telement *x; 
if(l.ec= =NULL){ 
//Erreur de supression} 
else{x=l.ec; 
        if(l.ec= =l.tete){ 
         l.tete=l.ec->s; l.ec=l.tete;} 
         else{l.predec->s=l.ec->s; l.ec=l.ec->s;} 
         }delete(x); 
} 

void ajoutg ( Tliste &l, int val){ 
Telement *x; 
if(listevide(l)){ 
x=new(Telement); 
x->v=val; 
x->s=NULL; 
l.tete=x; 
l.ec=x;} 
else if(l.ec= =NULL){//Erreur sur ajout gauche} 
else{x=new(Telement); 
       x->v=val; 
       if(l.tete= =l.ec){ 
       x->s=l.ec; 
       l.ec=x; 
       l.tete=x;} 
       else{x->s=l.ec; 
       l.predec->s=x; 
       l.ec=x;} 
     } 
} 

void ajoutd(Tliste &l, int val){ 
Telement *x; 
if(listevide(l)){ 
x=new(Telement); 
x->v=val; 
x->s=NULL; 
l.tete=x; 
l.ec=x;} 
else if(l.ec= =NULL){ 
//Erreur sur ajout droit} 
else{x=new(Telement); 
x->s=l.ec->s; 
x->v=val; 
l.ec->s=x; 
l.predec=l.ec; 
l.ec=x;} 
} 

//main.cpp 
#include <conio.h> 
#include <iostream.h> 
#include "list.h" 

typedef struct Telement{ 
int v; 
Telement *s; 
}Telement; 
typedef struct{ 
Telement *tete; 
Telement *ec; 
Telement *predec; 
}Tliste; 

int val; 
Tliste l; 

void main(){ 
initliste(l); 
do{ 
//Element a ajouter 
cin>>val; 
ajoutd(l, val);}while (val!=-1); 
entete(l); 
//Liste des elements de la liste 
while (l.ec!=NULL){ 
valec(l,val); 
printf(val); 
suc(l);} 
getch(); 
}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.