Bonjour,
Je travaille actuellement sur un projet et je dois copier une partie d'une liste de structure doublement chaînée. Cette manipulation doit forcément être possible mais je ne vois pas comment y arriver...
Admettons la structure suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 typedef struct e { char* name; int nbr; } ELEMENT; typedef struct node { ELEMENT data; struct node* prev; struct node* next; }*Liste
Je cherche à copier à partir d'un noeud de la liste, le reste de la liste, puis de mettre cette copie en bout de liste. Schématiquement ça donnerait :
A <-> Z <-> E <-> R <-> T <-> Y -> NULL , copie à partir de T, A <-> Z <-> E <-> R <-> T <-> Y <-> T <-> Y -> NULL
d'après ce que j'ai pu voir, je ne pense pas que la fonction memecop puisse réaliser ceci.
Et la fonction suivante ne marche pas :
Dans ce cas là, le 2ème élement "T" aura pour prev toujours "R" et non "Y"
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 void coy_part(Liste l, ELEMENT source) { Liste buffer = calloc(1,sizeof(source)); while(strcmp(l->data.name,source.name) !=0) //source.name = T { l = l->suiv; } buffer = l; while(l->suiv ! = NULL) { l = l->suiv; } l->suiv = buffer; }
Je cherche donc ) me placer en "T", copier tout ce qui suit, et remplacer le "prev" du nouveau "T". Je sens que c'est un truc bête mais je ne le vois pas...
Auriez vous une solution ?
Partager