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 :
- 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 :
Code :
- 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;
- }
|
Dans ce cas là, le 2ème élement "T" aura pour prev toujours "R" et non "Y"
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 ?
Message édité par chrisnilson le 30-11-2013 à 22:09:43