Liste doublement chainée en C
Fermé
Jarod
-
15 nov. 2004 à 00:45
lami20j
lami20j
- Messages postés
- 21331
- Date d'inscription
- jeudi 4 novembre 2004
- Statut
- Modérateur, Contributeur sécurité
- Dernière intervention
- 30 octobre 2019
A voir également:
- Liste doublement chainée en C
- Liste doublement chainée ✓ - Forum - Astuces et Solutions
- Liste doublement chainée circulaire ✓ - Forum - Astuces et Solutions
- [Java] copie d'une liste doublement chainée ✓ - Forum - Programmation
- LIste circulaire doublement chainee ✓ - Forum - Programmation
- Liste doublement chainée java - Forum - Java
5 réponses
maily
15 nov. 2004 à 21:51
- Messages postés
- 7554
- Date d'inscription
- lundi 26 juin 2000
- Statut
- Contributeur
- Dernière intervention
- 13 août 2018
15 nov. 2004 à 21:51
Je dirais qu'il faut parcourir 2 fois la liste chainée... ce n'est pas très pratique, mais bon, il n'y a que ça à mon avis!
Maily :-))))
Boumj'chtattrape
void affichageFin (LISTE *fin) { LISTE *p; LISTE * q; p=fin; while (p != NULL) { q=p; p = p->suivant; } while(q!=NULL){ p=q; q=q->precedent; printf("%d\n", p->valeur); } }
Maily :-))))
Boumj'chtattrape
voila le code ki me permet d'inserer des valeur en queue de chaine, et de les afficherdu debut à la fin. Pouvez vous m'aider a les afficher de la fin de la chine jusqu'au debut merci.
#include <stdio.h> #include <stdlib.h> typedef struct liste { struct liste *suivant; struct liste *precedent; int valeur; }LISTE; void affichage (LISTE *fin) { LISTE *p; p=fin; while (p != NULL) { printf ("%d\n", p->valeur); p = p->suivant; } } LISTE *insertion (int valeur, LISTE *p) { LISTE *nouveau; p->precedent = p->suivant; nouveau = malloc(sizeof(LISTE)); // printf("%d,%d",p->precedent,p->suivant); p->suivant = nouveau; nouveau->suivant=NULL; nouveau->valeur = valeur; return nouveau; } int main () { int i, n; LISTE *tete, *p; printf ("Taille de la liste:"); scanf ("%d", &n); p = (LISTE*) &tete; for (i=1; i<=n; i++) { p = insertion (i*i, p); } affichage(tete); }
#include <stdio.h> #include <stdlib.h> typedef struct liste
{
struct liste *suivant;
struct liste *precedent;
int valeur;
}LISTE;
// tu peux utiliser le paramètre "alafin" dans la procédure
// car tu ne modifies que la valeur locale (une copie sur la
// pile du pointeur "p" passé en paramètre)
void affichageFin (LISTE *alafin)
{
while (alafin != NULL)
{
printf("%d\n",alafin->valeur);
alafin=alafin->precedent;
}
}
void affichage (LISTE *fin)
{
LISTE *p;
p=fin;
while (p != NULL)
{
printf ("%d\n", p->valeur);
p = p->suivant;
}
}
LISTE *insertion (int valeur, LISTE *p)
{
LISTE *nouveau;
p->precedent = p->suivant;
nouveau = malloc(sizeof(LISTE));
if (nouveau != NULL)
{
// on vérifie tjs un pointeur alloué!!!!
// printf("%d,%d",p->precedent,p->suivant);
p->suivant = nouveau;
nouveau->suivant=NULL;
nouveau->valeur = valeur;
}
return nouveau;
}
int main ()
{
int i, n;
LISTE *tete, *p; /* *p est en fait ta fin de liste */
printf ("Taille de la liste:");
scanf ("%d", &n);
p = (LISTE*) &tete; for (i=1; i<=n; i++)
{
p = insertion (i*i, p);
}
affichage(tete);
affichagefin(p);
}
{
struct liste *suivant;
struct liste *precedent;
int valeur;
}LISTE;
// tu peux utiliser le paramètre "alafin" dans la procédure
// car tu ne modifies que la valeur locale (une copie sur la
// pile du pointeur "p" passé en paramètre)
void affichageFin (LISTE *alafin)
{
while (alafin != NULL)
{
printf("%d\n",alafin->valeur);
alafin=alafin->precedent;
}
}
void affichage (LISTE *fin)
{
LISTE *p;
p=fin;
while (p != NULL)
{
printf ("%d\n", p->valeur);
p = p->suivant;
}
}
LISTE *insertion (int valeur, LISTE *p)
{
LISTE *nouveau;
p->precedent = p->suivant;
nouveau = malloc(sizeof(LISTE));
if (nouveau != NULL)
{
// on vérifie tjs un pointeur alloué!!!!
// printf("%d,%d",p->precedent,p->suivant);
p->suivant = nouveau;
nouveau->suivant=NULL;
nouveau->valeur = valeur;
}
return nouveau;
}
int main ()
{
int i, n;
LISTE *tete, *p; /* *p est en fait ta fin de liste */
printf ("Taille de la liste:");
scanf ("%d", &n);
p = (LISTE*) &tete; for (i=1; i<=n; i++)
{
p = insertion (i*i, p);
}
affichage(tete);
affichagefin(p);
}
maily
15 nov. 2004 à 09:34
- Messages postés
- 7554
- Date d'inscription
- lundi 26 juin 2000
- Statut
- Contributeur
- Dernière intervention
- 13 août 2018
15 nov. 2004 à 09:34
Bonjour!
Pourrais tu mettre le code déjà écrit qu'on puisse partir d'une base s'il te plait? Comme ça, on ira plus vite pour t'aider!
;-)
Maily :-))))
Boumj'chtattrape
Pourrais tu mettre le code déjà écrit qu'on puisse partir d'une base s'il te plait? Comme ça, on ira plus vite pour t'aider!
;-)
Maily :-))))
Boumj'chtattrape
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bnjr j' besion de documentaton sur les listes en algorithmique soit cerculaire et bidirectionnelle et chainnée es ce que vous pouvez m'aidée.
lami20j
15 déc. 2007 à 17:26
- Messages postés
- 21331
- Date d'inscription
- jeudi 4 novembre 2004
- Statut
- Modérateur, Contributeur sécurité
- Dernière intervention
- 30 octobre 2019
15 déc. 2007 à 17:26