Bonjours à tous!
j'ai une petite question;au fait je suis sur un projet en langage C mais j'en ai plus fait depuis des années.
j'essaye de revoir les arbres et les listes doublement chainées mais je ne comprends pas pourquoi il faut utiliser comme argument des fonctions un pointeur sur pointeur.
voici un code récupérer sur le site dans le cours sur les arbres en C:
Je sais que si on ne passe pas à une fct une adresse on travaille sur une copie .
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 void addNode(node **tree[/HR], unsigned int key) { node *tmpNode; node *tmpTree = *tree; node *elem = malloc(sizeof(node)); elem->key = key; elem->left = NULL; elem->right = NULL; if(tmpTree) do { tmpNode = tmpTree; if(key > tmpTree->key ) { tmpTree = tmpTree->right; if(!tmpTree) tmpNode->right = elem; } else { tmpTree = tmpTree->left; if(!tmpTree) tmpNode->left = elem; } } while(tmpTree); else *tree = elem; }
Ce qui me derrnage c'est que dans le cours je vois que dans certaines fonctions un pointeur suffit alors que dans d'autre il faut un pointeur sur un pointeur..?
etant donné que la structure créée est un arbre on aurait peut etre pu passé en argument un pointeur uniquement.
Bref je pense que je suis en train de dire n'importe quoi,alors si quelqu'un pouvais m’éclaircir un peu les idée ce serait trop sympas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void addNode(node *tree[/HR], unsigned int key) { node *tmpNode; node *tmpTree = *tree;[/HR] //Cette ligne va rester la meme je pense! node *elem = malloc(sizeof(node)); elem->key = key; elem->left = NULL; elem->right = NULL;
et j’espère surtout que mon post pourras servir a d'autres personnes!!!
Bonne journée!
Partager