begin process at 2012 05 30 18:11:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Tableaux dynamique ou liste chainée ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tableaux dynamique ou liste chainée ?

lundi 4 avril 2005 à 13:02:59 | Tableaux dynamique ou liste chainée ?

tintin72

Bonjour,
J'ai écris une petite fonction qui permet d'allouer de la memoire pour créer des tableaux
dynamique.

exemple pour un tableau de structure dynamique:

typedef struct buffer 
{
     int iEntier;
    char * szTexte;
}BUFFER;

BUFFER * pBuffer = NULL;
int iElement = 0;

BUFFER * AllocMem(int iNbElement, BUFFER * pBuffer)
{
      if(pBuffer == NULL)                    //Si le pointeur n'a pas encore été initialisé
      {
       pBuffer = (BUFFER*) malloc (sizeof (BUFFER));// on alloue de la memoire pour  
                                                                                   // le 1er élément avec malloc.
              
      }
      else  // sinon on alloue de la memoire pour les autres éléments avec realloc.
      {
       pBuffer = (BUFFER*) realloc (pBuffer, (iNbElement + 1) * sizeof (BUFFER));          
          
      } 
            
     return pBuffer;  // et on renvoie le pointeur
}

void main()
{

pBuffer = AllocMem(iElement, pBuffer);
pBuffer[0].iEntier = 25;
pBuffer[0].szTexte = "Bonjour";
iElement++;

etc....

}

Apparement tout fonctionne correctement, evidemment j'ai pas testé tout les cas de figure
possible. C'est pourquoi je voudrais savoir si cette fonction peut être réellement utilisée sans problème. 
Je voudrais aussi savoir quelle est la différence avec une liste chainé au niveau rapidité, efficacité, et utilisation.

Merci pour votre aide.


Tintin 72

lundi 4 avril 2005 à 14:37:14 | Re : Tableaux dynamique ou liste chainée ?

ymca2003

pBuffer[0].szTexte = "Bonjour";
=> très risqué ça comme init.
Si tu modifie la chaîne pointée ou tu tentes de la détruire, Boom.

Le mieux c'est d'allouer également une chaîne de caractère avec malloc puis de recopier avec strcpy.

comparaison des tableaux dynamique et listes châinée.

Tableaux dynamiques :
- pas de fragmentation des éléments (ils sont à la suite des autres)
- accès rapide à l'élément d'indice i.
- changement de la taille lent si beaoucoup d'éléments (il faut recopier l'ensemble du tableau)

Liste chaînées :
- fragmentation des éléments (un peu partout en mémoire)
- accès lent à l'élément d'indice i (il faut parcourir toute la liste)
- changement de taille rapide (il suffit de bien gérer les maillons prev et next).

Conclusion : tout dépend de l'utilsation du tableau ou de la liste (à savoir comment se feront les accès aux éléments et si la taille va beaucoup évoluée).
lundi 4 avril 2005 à 15:23:19 | Re : Tableaux dynamique ou liste chainée ?

tintin72

Merci pour ces précieux renseignements ;-)

Tintin 72


Cette discussion est classée dans : buffer, dynamique, liste, tableaux, pbuffer


Répondre à ce message

Sujets en rapport avec ce message

Liste chainé - Tableau dynamique [ par Alucard ] Bonjour,Je me demandais quel était le meilleur choix à faire entre ces 2 systèmes de gestion de suite d'objets en mémoire.J'hésite un peu car finaleme tableaux dynamique (à taille variable) : petite précision [ par Amanobuo ] Salut ! J aimerai une petite précision sur les tableau dynamique, créé avec un new et un pointeur. Quant j'allou la memoire avec le pointeur : tableau Liste déroulante dynamique [ par obby ] Bonjour,  J'aurais voulu savoir comment faire pour faire une liste déroulante (dans une combobox par exemple) qui permette d'afficher un certain type allocation dynamique,liste chainée [ par versLeBut ] slt tout le monde        J'ai besoin d'une aide urgente pour mon projet          je vous explique,j'ai declaré une matrice de chaine de caractères com Affichage de texte dynamique ? [ par tintin72 ] Bonjour, J'aimerai avoir certaines confirmations au sujet de l'affichage de texte dynamique.J'ai fait un programme qui affiche dynamiquement (avec Inv Ouvrir un buffer dans une liste box [ par mleclaire ] Je voudrait ouvrir les données que j'ai dans mon buffer pour les afficher dans ma listbox.ListBox->Items->??;apres je ne c pas comment afficher le buf rechercher une ip dans buffer [ par wallegen ] bonjour à tous :-) Malgré mes recherches notemment sur la recherche de chaine je n'ai pas trouvé la moyen de rechercher un ip dans un buffer celle ci liste liée besoin d'aide [ par rab21 ] voila je debute en programmation et pr un projet jdois réaliser une liste liée... et comme jai vraiment du mal je me permet de vous demander de l'aide fuite memoire dans un programme [ par donlefou ] bonjour, quelqu'un pourrait regarder mon code pour voir d'où vient mes fuites memoires :template void C_Liste::ajouter_element(T elt){ // On crée un c Question sur les tableaux de structures [ par Kleidp ] Bonjour,j'ai quelques problèmes avec les tableaux de structure. Tout d'abord voici une de mes structures:typedef struct{    float r,g,b;}text;text tex


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,281 sec (3)

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