begin process at 2012 05 29 20:08:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Problème avec liste chainée


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

Problème avec liste chainée

dimanche 18 novembre 2007 à 17:51:59 | Problème avec liste chainée

MasterShadows

Bonjour à tous ,

alors voilà dans le cadre de mon tp de C je dois créer une liste simplement chainée tout ce qu'il y'a de plus générique.

donc on nous demande de créer ces méthodes, et la structure LISTE : donc cela donne :

/* Définition de la structure de liste */

typedef

struct LISTE* LISTE;

/* Définition du type ELEMENT */

typedef

void* ELEMENT;

/* Structure ITEM */

typedef

struct ITEM

{

/* Item Suivant */

struct ITEM *pNext;

/* Element actuel */

ELEMENT *pElement;

} ITEM;

/* Définition de ce qu'est la liste */

struct

LISTE

{

/* Sentinelle de début de liste */

ITEM *pStartSentinelle;

/* Element actuel */

ITEM *pCurrentElement;

/* Nombre d'éléments dans la liste */

int Count;

};

LISTE *creer();
void detruire(LISTE*liste);
int nbElements(LISTE*liste);
short estVide(LISTE*liste);
ELEMENT *valeurDe(LISTE* liste);
int supprimer(LISTE*liste)
int modifier(LISTE *liste, ELEMENT* elt);
int inserer(LISTE *liste, ELEMENT* elt);
int avancer(LISTE*liste);
short auBout(LISTE*liste);
short auDebut(LISTE *liste);
void allerEnTete(LISTE *liste);
void allerEnDernier(LISTE *liste);
------------------------ Les méthodes du dessus sont opérationnelles --------------------------------------------

int chercher(LISTE *liste, ELEMENT* elt, short(*idem)(ELEMENT *elt1, ELEMENT *elt2));
// Place le curseur sur l'élément de la liste qui vérifie la fonction idem() d'égalité entre l'élément actuel et elt.
// La ou les fonctions idem() seront définies dans le code utilisateur de la bibliothèque. Ces fonctions retournent la valeur 1 quand
// les éléments elt1 et elt2 sont jugées identiques, 0 sinon

void executer(LISTE*liste, void(*f)(ELEMENT*))
// demande l'exécution de la fonction f() sur tous les éléments de la liste. Le curseur ne change pas de valeur. La ou les fonctions
// f() seront définies dans le code de l'utilisateur de la bibliothèque.


Dans ma bib, ce sont ces 2 dernières méthodes que je ne comprends pas du tout. A quoi servent-elles ? pourrais-je avoir un exemple de ce type d'utilisation ?

Merci d'avance...
lundi 19 novembre 2007 à 14:17:46 | Re : Problème avec liste chainée

juju12

Réponse acceptée !
En fait je suppose que tu ne comprends pas short(*idem)(ELEMENT *elt1, ELEMENT *elt2) et void(*f)(ELEMENT*). Ce sont simplement des pointeurs sur des fonctions. Dans le premier cas, il s'agit d'une fonction de tri; dans le deuxième une fonction quelconque qui prend un ELEMENT* en paramètre.
Pour l'utilisation c'est très simple, je prends en ex. le premier cas :

short idem_int(ELEMENT*elt1, ELEMENT*elt2)
{
if(!elt1||!elt2) return 0;
return (*elt1==*elt2)1:0;
}

cette fonction doit comparer les deux éléments; son implémentation change en fonction du type sur lequel pointe un ELEMENT* (ici j'ai fait pour des int), c'est pour ca qu'on utilise ce système : on spécifie quelle fonction de comparaison utiliser lorsqu'on appelle chercher().

et après ta fonction chercher :
int chercher(LISTE *liste, ELEMENT* elt, short(*idem)(ELEMENT *elt1, ELEMENT *elt2))
{
ELEMENT* pElem=valeurDe(liste);
while(!idem(elt,pElem)) avancer(liste);
return 1;
}

bon faut encore rajouter des conditions d'arrêt mais tu vois le principe je pense.

Après pour l'utiliser c'est simple:
chercher(liste,elt,idem_int);

lundi 19 novembre 2007 à 16:22:28 | Re : Problème avec liste chainée

MasterShadows

merci c'est ce que je cherchais


Cette discussion est classée dans : int, liste, item, element, void


Répondre à ce message

Sujets en rapport avec ce message

constructeur de recopie et pointeur sur pointeur [ par popi0016 ] Bonjour je bloque sur la définition d'un constructeur de recopie d'une classe "liste" afin de sortir du programme principale sans provoque une exeptio Liste chainée en C++ [ par toitoine01 ] Bonjour ds le cadre de ma formation je doit réalisée un projet gestion d'une université j'utilise pour cela une liste chainée pour gerer les enseignan liste de liste en C++ pour manipuler des graphe [ par sbeclo007 ] bonjour, je suis un debutant en c++,et j'espere que vous m'aider à bien savoir comment implemantté un progm de Prim. la premiere des chose qui me gen Fonction recherche (listes chainées) [ par adri10 ] Bonjour à tous, Bon voilà j'ai un gros problème avec ma fonction recherche en liste chainées. Je pensais que mon programme était correct puisqu'en le Capture d une etoile par une planete [ par Xzin ] Bonjour, j'aurai besoin d'un peu d'aide pour mon projet d'informatique. Mon thème est la capture d'une planete par une etoile qui s'approche. Je dois pikcing opengl [ par znb ] J 'ai fait un code et ça marche très bien; il détecte les couleurs des objets. Mais je veux que, pour une valeur particulière de la couleur, dessiner erreur code [ par ucf662 ] [code=cpp]class point{ int x,y; public: void initialiser( int x1 , int y1 ) ; void deplacer( i suppression d'une ligne ou colonne d'une matrice avec C++ [ par saidkoukou ] j'ai écrit un petit programme C++ avec lequel je manipule une matrice.j'ai essayé d'appliquer la suppression d'une ligne et d'une colonne de cette mat IntToStr en C [ par RENTMEESTERS ] bonjour à tous, Je dois convertir un nombre entier INT en une chaîne de caractère qui devra être affichée sur un LCD (*char). J'utilise un 16F887 et probléme avec un Slider : comment envoyé la valeur généré par le slider a une intérface opengl [ par controlleur ] Bonjour dans mon projet j'ai réalisé une petite interface que je l'ai intégré dans un mainwindow class mainwindow : public QMainWindow { Q


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,608 sec (4)

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