CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++]Liste chainée

dnob700
dnob700
Niveau 10
16 juin 2004 à 20:52:05

Bonjour,

Je m´entraine aux listes chainées, mais je rencontre quelques petit problème.

d´abord, si j´ai une structure ID_List
et une variable
ID_List *NextID
pour acceder au membre de NewtID, il faut utiliser

  • NextID->ID

ou bien
NextID->ID

La deuxième solution fonctionne, mais je ne comprend pas pourquoi.

Kouic
Kouic
Niveau 9
16 juin 2004 à 23:20:48

Haaaaaaaaa, les pointeurs... un cap difficile pour bcp de personnes.

ID_List* NextID;
if(NextID!=NULL) / /Pour la bonne habitude
{
NextID->ID = truc; / /Correct
( *NextID).ID = truc;//Correct ( meme sans les ( ) )
( *NextID)->ID = truc; / /Erreur
}

NextID est un pointeur sur une structure, type ID_List*.

  • NextID est une structure pointée.

NextID->ID point sur la variable ID tout comme ( *NextID).ID. C´est deux facon differente pour dire la meme chose.

Mais bon, les livres parlent surement mieux que moi :)

dnob700
dnob700
Niveau 10
17 juin 2004 à 12:19:37

merci beaucoup, c´était un point mystérieux pour moi.

lag-it
lag-it
Niveau 10
18 juin 2004 à 21:51:41

Ou est passé le fond d´écran de Kelios sur le sujet =)

dnob700
dnob700
Niveau 10
18 juin 2004 à 21:57:26

ah oui, c´est donc kelios, je me souvenais de ce truc, mais je n´avais pas réussi à le retrouver vu que je ne savais plus qui l´avait fait.

http://redotror.free.fr/LinkedList.jpg

merci, maintanant que je sais que c´est kelios, ca a été facile de le retrouver, mais bon, son topic était linkedlist alors en cherchant liste chainé, on avait pas beaucoup de chance. Comme quoi, faire des topic explicite c´est important...

https://www.jeuxvideo.com/forums/1-31-8251082-1-0-1-0-0.htm

pour le topic.

dnob700
dnob700
Niveau 10
18 juin 2004 à 22:05:15

a ce propos, kelios écrit :
struct Element
{
struct Element* Prochain;
int Valeur;
};

struct Element* Prochain;
est équivalent à
Element *Prochain;
non ?

lag-it
lag-it
Niveau 10
18 juin 2004 à 22:23:28

Kelios écrit en C dans son exemple.
En C, tu est obligé d´utiliser " struct Element", alors qu´en C++, tu peux te contenter de " Element".
Pour éviter ceci, en C tu peux faire :

struct Element_
{
struct Element_* Prochain;
int Valeur;
};

puis :

typedef Element_ Element;

Ou plus concis :

typedef struct Element_
{
struct Element* Prochain;
int Valeur;
} Element;

( mais il faut laisser Element_ pour pouvoir déclarer le pointeur ) .

Et oui, ces noations sont équivalentes en C++ ( mais pas en C ) qui ne reconnais, selon la norme ANSI, que la première forme ) .

lag-it
lag-it
Niveau 10
18 juin 2004 à 22:24:02

OOPS : Erreur :

typedef struct Element_
{
struct Element_* Prochain;
int Valeur;
} Element

JeanYvesYves
JeanYvesYves
Niveau 10
18 juin 2004 à 23:23:45

C´est bien que tu fasses les listes chainées, ça donne une bonne notion d´algorithmique :)
Bon, je te laisse les finir, et apres, si tu veux, je te parlerai de ce qu´on appelle les . .. ( je ne dis pas le mot tout de suite), qui sont des listes chainées standard incluses dans tous les compilateurs C++, et oui, ça existe déja dans ton compilateur, lol ! !
un petit #include, et ça roule :)

Bon, allez, on en reparlera plus tard :)

dnob700
dnob700
Niveau 10
19 juin 2004 à 00:26:53

c´est assez visieux de ta part ça JYY !

en fait, c´est toujours pour mes histiore de DLL ( j´avais un peu arrété à cause du bac), j´ai trouvé que les listes chainées étaient la manière la plus simple pour gérer la mémoire.

mais je ne sais pas du tout si ça va marcher, parce que je ne sais pas comment Windows gère les DLL et la mémoire entre les différent appel. je vais commencer a faire des test sur ce sujet.

A ce propos, une question stupide : où faut-il déclarer des variables pour qu´elle soit visible au niveau du projet ( dans tous les fichiers . cpp). Car quand je déclare des variable dans un fichier . h , si je l´inclue dans plusieurs fichiers le compilo fait une erreur au linkage.

dnob700
dnob700
Niveau 10
19 juin 2004 à 00:30:59

je voulais dire vicieux bien entendu.

dnob700
dnob700
Niveau 10
20 juin 2004 à 22:29:06

bon, j´ai fini la gestion des utilisateur de la DLL :
http://perso.wanadoo.fr/sectionpc/sectionbasic/programmes/linkedlist.htm
c´est le code qui s´en occupe.

Tout ça pour dire, que maintenant que ça marche, c´est ce code que j´utiliserai et donc pour ma culture, je ne refuserai pas des indications quand à la bibliothèque à inclure pour utiliser les listes chainées.

lag-it
lag-it
Niveau 10
20 juin 2004 à 23:17:36

google vite fait :

http://www.game-lab.com/?p=viewtut&id=7&l=1#part4

Chapitre STL

dnob700
dnob700
Niveau 10
20 juin 2004 à 23:54:55

merci,

en fait, on avait l´impression que jyy se fesait une joie de m´expliquer ( enfin, de me mettre sur la voie) c´est pourquoi je n´avais pas trop cherché.

bon, mais j´ai trouvé un site avec des références plus précise, et, pour ce dont j´avais besoin, je pense qu´une petite implémentation personnel est tout a fait suffisante et bien plus gratifiante que d´utiliser la très performante certe mais aussi complexe librairie standard.

JeanYvesYves
JeanYvesYves
Niveau 10
22 juin 2004 à 18:24:38

en effet, c´est bien les STL :)

j´ai un exemple sur mon site si tu veux :

http://www.fvirtman.fr.st

rubrique info/progs/tutoC++
chapitre D.
mais c´est loin d´etre fini :)

lag-it
lag-it
Niveau 10
23 juin 2004 à 13:23:16

" je pense qu´une petite implémentation personnel est tout a fait suffisante et bien plus gratifiante que d´utiliser la très performante certe mais aussi complexe librairie standard"

Ne réinvente pas la roue à chaque fois cependant : la STL est une source sûre de composants éprouvé et performant. Certains peuvent paraitre complexes, mais dans une optique de maintenance de projet, il est souvent plus aisé d´avoir recours à ce type de composants.
On ne sait jamais jusqu´où un projet peut mener :-)

dnob700
dnob700
Niveau 10
23 juin 2004 à 19:59:32

merci pour les réponses, il faut absolument qu´un jour je lise tout le cours de jyy, mais j´ai jamais trouvé le temps.

c´est vrai que la STL ou autre librairie est super pratique et qu´on peut gagner énormément de temps à l´utiliser, mais pour l´instant, je programme essentiellement pour apprendre à programmer ( en tout cas en C++), et dire je l´ai fait, ce qui n´est pas le cas de la STL !

lag-it
lag-it
Niveau 10
23 juin 2004 à 23:38:28

Il est vrai que j´aime également pouvoir dire une fois le projet terminé : " c´est moi qui ai tout fait".
Cependant attention, car devoir tout reconstruire mène parfois à l´abandon du projet, faute de motivation en raison de l´absence d´un résultat encourageant rapidement.
Mais dans une optique d´apprentissage, la démarche est très bénéfique, d´autant plus que la réutilisation logiciele permettra de faire à nouveau usage de ces composants dans les projets futurs.
Reste que dans un contexte de performance, mis à part certains cas ou on a la possibilité de restreindre l´algorithme à un ensemble ( cosinus par exemple ) , il est préférable d´avoir recours à la STL...

JeanYvesYves
JeanYvesYves
Niveau 10
24 juin 2004 à 08:05:46

lag-it > tout a fait !
je me rappelle, en cours, on m´a demandé de programmer des listes chainées, toute sortes de trucs comme ça, bon, j´y ai fait.

Mais maintenant, des que j´ai besoin de ça, je ne vais pas chercher mon vieux TP, c´est STL direct !
car derriere, tu as 50000 algos sympas !

Kelios
Kelios
Niveau 8
25 juin 2004 à 06:28:31

Suis je vraiment le seul à trouver la STL LOURDE?
Vraiment, je trouve ça vraiment une librairie-boulet... :)

C´est lourd, trop généraliste ( pas optimisé pour ton cas à TOI...) et gonflé de code à coucher dehors, savez qu´à regarder les " header-source(?)" des différents composants de la STL pour voir...

Consommation abusive du POO, surutilisation des templates ( à mon avis), enfin bref, ça fait pas dans la dentelle...

Et ce, sans compter que c´est pas n´importe quelle classe qui peut être STLisé! Hé oui, y´a des restrictions, des prérequis au niveau des classes! Qui a dit boulet? Moi... ( suis-je vraiment le seul?)

Et quand tu débug, c´est pas vraiment un cadeau. Certes, toute la STL doit être pratiquement sans faille, mais que ce passe-t-il lorsqu´il s,agit de ta classe STL-isée qui a un problème quelconque?

Ben oui, tu le débuggue, et tu te retrouve vite à devoir jongler dans ton code, mais avec un boulet en arrière, la STL.

Ici bien sur je parle de ma propre expérience, donc je sais pas si c´est votre cas, mais pour moi:
La STL a beaucoup d´avantages,
La STL a aussi beaucoup de désavantages,
Et à mon avis Désavantages de la STL > Avantages de la STL.

Enfin bref, moi la STL, pour les gros projets, non merci. :)

T´es bien plus à l´aise dans ton code...

Mon conseil? Fais toi ta propre STL ( en plus spécialisé pour tes trucs, cepandant):
-Tu apprend tout comment ça marche.
-Le gain didactique est énorme ( voir les commentaires dans les posts précédents).
-Tu peut la réutiliser tout comme la STL si tu l´as bien conçu.
-C´est une réalisation dont tu pourra être fier et qui te sera utile tout le temps.
-Ça sera bien meilleur pour toi que la STL ( quoique pour les autres ça sera pas nécessairement le cas).
-T´es pas obligé de refaire toute la STL, seulement ce que tu trouve vraiment utile pour toi...
-Gros avantage: modifiable à guise, tu pourra continuellement l´améliorer et l´adapter avec le temps quand tu trouvera les modifications utile voire nécessaire : la librairie évolueras avec toi.
-Je vois pas grand chose d´autre. :)

Kelios
---------

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment