begin process at 2012 02 12 21:59:34
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > ALLOCATION DYNAMIQUE DE LA MEMOIRE, LISTES ET POINTEURS, LA MEMOIRE ARTIFICIELLE

ALLOCATION DYNAMIQUE DE LA MEMOIRE, LISTES ET POINTEURS, LA MEMOIRE ARTIFICIELLE


 Information sur la source

Note :
1 / 10 - par 2 personnes
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :allocation, mémoire, dynamique, poiteur, artificelle Niveau :Débutant Date de création :22/09/2005 Vu / téléchargé :6 225 / 227

Auteur : sbeuz

Ecrire un message privé
Site perso
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • // 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();
  • }
// 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(); 
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec une capture CLASSES ET OBJETS EN C++
ALGO GÉNÉRAL DE RECHERCHE DICHOTOMIQUE APRÈS UN TRIE BUBBLE ...

 Sources de la même categorie

Source avec Zip SCHEDULER RR FIFO par yvesB87
Source avec Zip ALGORITHMES RÉCURSIFS VS ALGORITHMES ITÉRATIFS par yvesB87
Source avec Zip Source avec une capture C++ FORMAT D'IMAGE AVEC QT par pop70
Source avec une capture EXEMPLE DE POINTEURS DE FONCTION par pop70
Source avec Zip Source avec une capture [C++] CLASS REGISTER par Miwik

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture ALGORITHME DE CRYPTAGE/DECRYPTAGE par besilent
Source avec Zip Source avec une capture [C++] CLASS REGISTER par Miwik
[DEV-C++] CALCUL DE LA RACINE CARRÉE D'UN RÉEL par Jhep
Source avec Zip Source avec une capture MODÉLISATION D'UNE SURFACE AVEC UN MAILLAGE MASE RESSORT OPE... par SebLinck
FILE DE PRIORITÉ DYNAMIQUE par mehdi7604

Commentaires et avis

Commentaire de ivanmari le 22/09/2005 19:26:29

Pour qui est'ce que vous utilisez la Librairie list.h from C instead of <list> from the STL that is better in C++ ?

Ivan

Commentaire de magic_Nono le 23/09/2005 01:32:25

Ivan : employer les stl implique différentes choses

nottamment la levé d'un nombre incommensurable de warning

ce qui est innacceptable lors d'une volontée de projet
0 error 0 warning.

voila une des raison qui m'a poussé avec quelques amis a développer un ensemble de bibliothèque (portable sauf pour la section graphique) dont vous avez certainement entendu parler dans ces pages : les Bxxx

Magicalement
Nono.

Commentaire de Pamaury le 23/09/2005 16:57:59

je ne suis pas d'accord: il y a warning si les types sont mal utilisés mais la stl en elle-même peut-être utilisée avec
0 errors 0 warnings
et çà je peux te l'assurer puisque c'est précisement ce que je fais à chaque fois que je l'utilise .

Commentaire de Taron31 le 23/09/2005 18:49:12

Sbeuz : moi aussi j'ai implementé une classe List pour débutant tu peux aussi jeter un oeil si ça t'interesse... bye

Commentaire de magic_Nono le 23/09/2005 19:32:11

0 warning avec VC6 en mode warning 4 ???

là vs pourriez m'intéresser...

Commentaire de sbeuz le 23/09/2005 22:32:57

ivan : Because this code is written to have a better comprehension about List. Code Niv. 1

Commentaire de Pamaury le 25/09/2005 20:01:57

avec VC6 je sais pas mais avec gcc oui et Open Watcom aussi donc je pense que c'est aussi possible avec VC6 .

Commentaire de Arnaud1602 le 30/09/2005 11:36:26

exact, avec la STl sous VC6 , il suffit de mettre les warnings en niveau 4 et ca compile sans erreurs (encore heureux) ni warnings
pour ton prog sbeuz je ne l'ai lu qu'en vitesse mais ya qqch de tres grave:
_si_ je ne m'abuse, tu ne libere jamais la mémoire.... t'as bien (tes noms de fonctions ne sont pas tres explicites je trouve) une fonction pour virer un élément mais a la fon du main ya tout qui reste en mémoire, ca pue le mem leak ca
dites moi si j'ai pas vu que, par exemple, la fonction en question est dans une boucle, j'ai pas trop le temps de m'attarder
++

Commentaire de Flothi27 le 18/05/2006 10:50:14

Tu fais un new TElement() mais ne manquerait il pas un delete ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Allocation dynamique de mémoire (°_°) [ par ceeno ] Bonjour à tous,Je cherche a crée un tableau dont j'augmente la mémoire à chaque fois que je veu y enregistrer une nouvelle valeur.Mais je n'y arrive p Exception et Allocation Mémoire [ par magic_Nono ] Bonjour,G réalisé une classe pour gérer mes exception.http://www.cppfrance.com/code.aspx?ID=19671Cette classe comporte une chaine de caractère...Mais prd de fuite mémoire. [ par gyzmo1 ] Salut à tous, dans mon programme je dois utiliser beaucoup de matrice et donc pas mal d'allocation dynamique. Je desalloue regulièrement mes tableaux( Probleme d'allocation de mémoire dynamique (malloc/free) [ par PhantomPowaa ] Bonjour,J'ai un petit probleme avec les fonctions malloc et free dans certains de mes programmes. Apparement le malloc s'effectue correctement, mais a Allocation méoire [ par pac2 ] Salut,Dans un de mes programmes je déclare des tableaux de nombres à double précision à 3 dimensions. Je déclare en fait 6 tableaux "double tab[30][30 Question sur l'allocation de mémoire... [ par kod32 ] Salut,j'ai une question concernant l'allocation de mémoire et notamment l'utilisation de la fonction malloc. Cette fonction permet de pointer vers un allocation dynamique [ par hobbes ] Bonjour,Mon probleme est que je ne connais pas a l avance la taille du tableau que je souhaite cree. Je pensais alors :creer un tab de maniere dynamiq allocation dynamique [ par none77 ] Bonjour,j'ai un petit prog dans lequel j'utilise deux tablo dynamiques (j'utilise malloc() )A la fin je dois donc faire des free().Mon pb est ke lorsq allocation dynamique d'un tableau à trois dimensions [ par yo62 ] Bonjour,J'ai un bête pointeur dans une structure :int *Tableau;et je voudrais que ce pointeur pointe sur une allocation dynamique de type tableau mais allocation dynamique [ par JediMaster ] je veux crée une variable dynamiqueje fait donc un pointeur et tous marche bien sauf que quelque chose me chifone voila mon codeint* variable = NULL;v


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales