Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
6390 connectés 

 


Dernière réponse
Sujet : [C] Liste chainee
LeGreg

BENB a écrit a écrit :

 
Brrr, j'ai horreur de ce types qui ne sont que des pointeurs... j'en suis toute despointee...:D



 
Du C sans pointeur? mais comment fais-tu :) ?
 

BENB a écrit a écrit :

 
ceci dit ce n'est pas une liste chainee, mais une liste doublement chainee...  




 
Oops oui
Correction: tu supprimes

Code :
  1. LPLINK     PrevLink;


(faut pas non plus oublier
de mettre un pointeur vers l'objet
contenu)
 

BENB a écrit a écrit :

 
C'est toi qui a ajoute des objets




 
Qui a dit qu'on ne pouvait pas avoir d'objets en C?
Ma liste est un objet, certes un peu vide tant qu'on n'a pas
precise les methodes qui s'y appliquait:
genre AddItem(LIST ma_liste, MONTYPE mon_objet);  
(je n'ai pas pousse le vice jusqu'a definir
une vtable par objet..)
 
A+
LEGREG


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
LeGreg

BENB a écrit a écrit :

 
Brrr, j'ai horreur de ce types qui ne sont que des pointeurs... j'en suis toute despointee...:D



 
Du C sans pointeur? mais comment fais-tu :) ?
 

BENB a écrit a écrit :

 
ceci dit ce n'est pas une liste chainee, mais une liste doublement chainee...  




 
Oops oui
Correction: tu supprimes

Code :
  1. LPLINK     PrevLink;


(faut pas non plus oublier
de mettre un pointeur vers l'objet
contenu)
 

BENB a écrit a écrit :

 
C'est toi qui a ajoute des objets




 
Qui a dit qu'on ne pouvait pas avoir d'objets en C?
Ma liste est un objet, certes un peu vide tant qu'on n'a pas
precise les methodes qui s'y appliquait:
genre AddItem(LIST ma_liste, MONTYPE mon_objet);  
(je n'ai pas pousse le vice jusqu'a definir
une vtable par objet..)
 
A+
LEGREG

BENB

legreg a écrit a écrit :

J'ai peche ca je sais pas ou :
 

Code :
  1. typedef struct _LINK *LPLINK;
  2. typedef struct _LINK
  3. {
  4.     LPLINK     PrevLink;
  5.     LPLINK     NextLink;
  6. } LINK;
  7. typedef struct _LIST
  8. {
  9.     LPLINK      Tail;
  10.     LPLINK      Head;
  11.     DWORD       Length;
  12. } LIST;
  13. typedef LIST *LPLIST;


 
evidemment il faut prevoir une fonction d'initialization
de ta liste
et des fonctions d'ajout, suppression d'elements.
 
A+
LEGREG  




Brrr, j'ai horreur de ce types qui ne sont que des pointeurs... j'en suis toute despointee...:D
ceci dit ce n'est pas une liste chainee, mais une liste doublement chainee...

godbout

legreg a écrit a écrit :

 
 
Ah non il a precise C pur cette fois ci :)
 
LEGREG  
 
 




 
euh..ouaip mais c'etait pour pas partir dans des trucs trop dur pour moi :D

BENB

legreg a écrit a écrit :

 
 
Ah non il a precise C pur cette fois ci :)
 
LEGREG  
 
 




C'est toi qui a ajoute des objets :D

LeGreg

BENB a écrit a écrit :

 
ben dans ce cas la j'utilise directement les list de la STL :D  




 
Ah non il a precise C pur cette fois ci :)
 
LEGREG

 

[edtdd]--Message édité par legreg--[/edtdd]

LeGreg J'ai peche ca je sais pas ou :
 

Code :
  1. typedef struct _LINK *LPLINK;
  2. typedef struct _LINK
  3. {
  4.     LPLINK     PrevLink;
  5.     LPLINK     NextLink;
  6. } LINK;
  7. typedef struct _LIST
  8. {
  9.     LPLINK      Tail;
  10.     LPLINK      Head;
  11.     DWORD       Length;
  12. } LIST;
  13. typedef LIST *LPLIST;


 
evidemment il faut prevoir une fonction d'initialization
de ta liste
et des fonctions d'ajout, suppression d'elements.
 
A+
LEGREG

BENB

legreg a écrit a écrit :

tu peux aussi avoir un objet liste qui encapsule tout ca
des fonctions de tris generiques
avec des pointeurs de fonction.
(le premier qui me dit qu'il n'y a pas d'objet en C,
ben je sais pas ce que je lui fais :D )
 
Ou alors programmer en Caml et la c'est le pied cote
utilisation des listes et fonctions recursives
mais la je saute dans le OT a pieds joints pieds joints
 
A+
LEGREG  




ben dans ce cas la j'utilise directement les list de la STL :D

BENB

Godbout a écrit a écrit :

 
 
Bonne question BENB, mais ca ne m'amuses pas de me torturer ainsi pour des broutilles.
Pour ce qui est de la liste vide, avec une variable du type de la structure, il suffit de faire var.next = NULL et ta liste vide est la aussi...  




elle n'est pas vide puisqu'il reste var dedans...

godbout je met le code pour etre plus clair:
 
 
 
1ere sol:
 
sruct Liste
{
..}*depart, *noeud;
 
if (depart == NULL)
{
...}
 
2eme sol:
 
sruct Liste
{
..}depart, *noeud;
 
depart.suivant = NULL;
noeud = &depart;
 
noeud->suivant = (struct Liste *) malloc...
noeud = noeud -> suivant...
LeGreg tu peux aussi avoir un objet liste qui encapsule tout ca
des fonctions de tris generiques
avec des pointeurs de fonction.
(le premier qui me dit qu'il n'y a pas d'objet en C,
ben je sais pas ce que je lui fais :D )
 
Ou alors programmer en Caml et la c'est le pied cote
utilisation des listes et fonctions recursives
mais la je saute dans le OT a pieds joints pieds joints
 
A+
LEGREG
godbout

BENB a écrit a écrit :

Il y a des moments ou il faut faire des choix, le choix en lui meme de determine pas forcement grand chose, mais il faut le faire...
 
pour ma part je prend le pointeur initial, car il me permet d'avoir une liste vide... et pour les fct recursives je trouve cela plus joli...
 
mais je te le demande Godbout... qui etait a l'origine :  
La poule, ou l'oeuf ?  




 
Bonne question BENB, mais ca ne m'amuses pas de me torturer ainsi pour des broutilles.
Pour ce qui est de la liste vide, avec une variable du type de la structure, il suffit de faire var.next = NULL et ta liste vide est la aussi...

BENB Il y a des moments ou il faut faire des choix, le choix en lui meme de determine pas forcement grand chose, mais il faut le faire...
 
pour ma part je prend le pointeur initial, car il me permet d'avoir une liste vide... et pour les fct recursives je trouve cela plus joli...
 
mais je te le demande Godbout... qui etait a l'origine :  
La poule, ou l'oeuf ?
godbout Ben normalement pour faire joujou avec les chaines t'as besoin d'un pointeur de tete auquel on touche pas, un pointeur precedent, et un nouveau en fait.
chrisbk non c t vis a vis de ton ptr courant (faire gaffe a ce qu'il ne pointe pas sur un element qui vient d'etre efface par ex), enfin g ptet pas bien tout compris comment tu veux organiser ca....
godbout dans ce cas t'es oblige de faire un if (pointeurTete == NULL) pour pouvoir faire le premier maillon nan ?
paske je suis retourne dans les sources du musee et la :vomi: je tombe sur un vieux booleen tout pourri.
 
Et je capte pas le pb du delete ? (free ??)
chrisbk sinon vu que g l'impression d'avoir ete un peu a cote de la plaque perso je garde tjs un ptr vers le premier element
donc ptet plus la premiere mais fait bien gaffe au ptr courant quand tu deleteras un element....
godbout ouais je sais qu'on peut les mettre en tete de liste aussi.
J'suis obsede par le fait de faire de la prog propre, faudrait peut etre que j'aille voir un psy :D
 
Surtout que je suis sur que ca change rien mais bon...
chrisbk tu sais, dans le fond, t pas oblige d'inserer les elements a la fin de la liste...
koulip31

Godbout a écrit a écrit :

C'est koi le mieux pour faire une liste chainee:
 
-declarer 2 pointeurs (un de tete, un courant), et tester si la liste est vide pour soit ajouter le premier maillon, soit ajouter a la suite des autres maillons
 
-declarer une variable, un pointeur courant, faire pointer le pointeur courant sur la variable, et pas faire de test  




 
vote pour la 2em solution seul hic pour aller chercher ton premier element inséré tu vas étre oblige de parcourir toute ta liste et ca c'est trop pouris (garder un pointeur sur le 1er elem insere)
 
koi ke le 1er exemple est nikel pour aller chercher rapidement un objet dans ta liste (reste a definir dans kel ordre la parcourir pour aller le chopper)  
 
rhha cette question est suivant ton aplication ....

 

[edtdd]--Message édité par koulip31--[/edtdd]

godbout C'est koi le mieux pour faire une liste chainee:
 
-declarer 2 pointeurs (un de tete, un courant), et tester si la liste est vide pour soit ajouter le premier maillon, soit ajouter a la suite des autres maillons
 
-declarer une variable, un pointeur courant, faire pointer le pointeur courant sur la variable, et pas faire de test

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)