2009-11-10 4 views
2

J'ai reçu la liste L1, L2. L1 contient 1,2,3 et L2 contient 4,5,6. comment puis-je copier le contenu de L2 à la fin de L1 donc à la fin L1 contient 1,2,3,4,5,6. Aucune suggestion?comment copier un contenu de la liste de liens vers une autre liste de liens

+1

Vous avez besoin d'un peu plus de détails avant de pouvoir répondre à cette question. Ecrivez-vous vous-même la classe de la liste liée ou utilisez-vous une classe existante? Si un existant, lequel? – qid

+0

Ce n'est vraiment pas une question spécifique au studio visuel. –

+1

Cela ressemble aussi à des devoirs ... – Salgar

Répondre

1

S'il s'agit d'une liste chaînée, chaque nœud de la liste doit avoir un pointeur vers l'élément suivant de la liste. Le dernier nœud de la liste doit indiquer null (ou un autre moyen d'indiquer que vous êtes à la fin de la liste). Pour copier le contenu de L2 à la fin de L1, il suffit de définir le pointeur de nœud suivant de l'élément LAST de L1 sur le premier élément de L2.

3

Ne sachant plus au sujet de la mise en œuvre effective, je dirais faire ceci:

L1.tail = L2.head

Cela permettra de relier les deux ensemble liste, vous pouvez jeter la référence à L2 .

1

Puisqu'il s'agit d'une question de devoirs, je ne peux pas vous donner le code réel. Mais c'est un problème facile à résoudre.

Fondamentalement, vous voulez juste ajouter le contenu de L2 à la fin de L1. Comme vous le savez, chaque liste liée a un pointeur de tête et un pointeur de queue. Lorsque vous ajoutez à une liste, cela signifie attacher un nouveau nœud au pointeur de queue, puis déplacer le pointeur de queue vers l'avant. Il suffit donc d'ajouter le pointeur de tête de L2 au pointeur de queue de L1 et de déplacer le pointeur de queue de L1 à la fin de la liste. N'oubliez pas de mettre à jour la taille de la liste, si votre classe de liste a une variable de taille interne pour compter le nombre d'éléments.

0

Qu'arrivera-t-il à L2 après cela? Vous ne voulez certainement pas juste changer L1.tail pour pointer vers L2.head si L2 va être utilisé et changé plus tard dans le programme. Pourquoi ne pas simplement boucler de la tête à la queue de L2 et pousser les valeurs dans L1? (Si vous souhaitez des détails d'implémentation spécifiques, vous devez nous indiquer quelle liste liée vous utilisez, ou publier le code sur le vôtre si vous l'avez écrit).

1

Vous avez commenté que ce n'est pas un devoir, même s'il est étiqueté comme devoir. Je te prendrai au mot. En utilisant la liste STL C++, il vous suffit d'utiliser la méthode insert et certains itérateurs.

list<int> L1; 
list<int> L2; 

// let's just assume that L1 and L2 are initialized in the manner you described 

// after this, L1 will contain 1,2,3,4,5,6 
L1.insert(L1.end(), L2.begin(), L2.end()); 
Questions connexes