Il s'agit d'une question de programmation posée lors d'un test écrit pour un entretien. "Vous avez deux listes singulièrement liées qui sont déjà triées, vous devez les fusionner et renvoyer la tête de la nouvelle liste sans créer de nouveaux nœuds supplémentaires. La liste retournée doit également être triée.
La méthode signat Node MergeLists(Node list1, Node list2) ;
La classe de nœuds est indiquée ci-dessous :
class Node{
int data;
Node next;
}
J'ai essayé de nombreuses solutions, mais le fait de ne pas créer de nœud supplémentaire ne fait que compliquer les choses. Merci de m'aider.
Voici l'article de blog qui l'accompagne http://techieme.in/merging-two-sorted-singly-linked-list/
0 votes
Le dernier élément de la liste 1 est-il plus petit que le premier élément de la liste 2 ?
0 votes
Remarque : j'ai également trouvé une solution sur stackoverflow.com/questions/2348374/fusion de deux listes triées mais celui-ci, lorsqu'il est exécuté, s'inscrit dans une boucle infinie.
0 votes
@Pier : Il peut s'agir de n'importe quoi. Les deux listes sont triées individuellement et le code doit produire une troisième liste qui est triée.
0 votes
En effet, si le dernier élément de la liste 1 est plus petit que le premier élément de la liste 2, il suffit de remplacer le dernier nœud suivant par le premier nœud de tête de la liste 2.
1 votes
@Pier-alexandreBouchard C'est extrêmement optimiste quant au type de contribution que vous obtiendrez.
0 votes
@Pier : Les listes chaînées sont 1) 1->2->3->4->5 2) 1->2
0 votes
Vous devez utiliser deux pointeurs, l'un pour pointer vers la première liste et le second pour pointer vers la seconde liste. vous déplacez les pointeurs un par un. vous devez également clarifier si cela doit être inplace pour une liste ou si la création de la troisième liste est ok. dans l'ensemble. dans les deux cas, c'est facile avec l'utilisation de deux pointeurs.