Salut !
Je me lance dans les listes doublement chainées.
J'ai implémenté les 2 premieres fonctions de base : l'ajout en tete, et l'affichage.
Elles ont l'air correctes, mais je préfère en être sur avant de continuer donc je vous poste mon code et si des choses ne vont pas n'hesitez pas !![]()
Le .h
listed.c :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include <stdio.h> #include <stdlib.h> typedef struct noeud { int val; struct noeud *pSuiv; struct noeud *pPrec; }noeud; typedef struct list { noeud *pTete; noeud *pQueue; }list;
Et le main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #include "listed.h" /* Fonction qui ajoute un element en debut de liste */ void ajouter(list *p, int valeur) { noeud *nouv = malloc(sizeof(*nouv)); if(nouv) { nouv->val = valeur; /* Si la liste est vide */ if(!p->pTete) { nouv->pSuiv = NULL; nouv->pPrec = NULL; p->pTete = nouv; p->pQueue = nouv; } else { nouv->pPrec = NULL; nouv->pSuiv = p->pTete; p->pTete->pPrec = nouv; p->pTete = nouv; } } else { perror("malloc()"); } } /* Fonction qui affiche la liste */ void afficher(list *p) { noeud *tmp = p->pTete; while(tmp) { printf("%d\n",tmp->val); tmp = tmp->pSuiv; } }
Voila, merci à vous pour vos remarques
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "listed.h" int main() { list maListe = {0}; ajouter(&maListe,1); ajouter(&maListe,2); ajouter(&maListe,3); afficher(&maListe); system("Pause"); return 0; }![]()
Partager