Le tri des listes chaînées en C

M'a demandé d'écrire une fonction qui prend 3 non triés listes chaînées et retourne une seule triés liste chaînée qui combine tous les trois listes. Quelle est la meilleure façon que vous pouvez penser?

Je n'ai pas vraiment de restrictions de mémoire, mais que feriez-vous avec/sans les restrictions de mémoire?

  • Ajouté les devoirs de la balise. Comment avez-vous de tri 'em de toute façon? Par ordre alphabétique, à partir de la plus petite à la plus grande..?
  • rejoindre le 3 listes ensemble (queue de liste 1 -> à la tête de la liste 2, etc..), alors vous avez seulement 1 liste et se réduit à une simple fonction de tri.
  • Ce algorithmes de tri savez-vous?
  • Si le tri doit être lié de tri de la liste, puis un bas jusqu'à la fusion de tri à l'aide d'un petit tableau de pointeurs vers les nœuds est la plus rapide. wiki exemple. Depuis les nœuds sont regroupées dans le tableau interne, un à un, les 3 listes peuvent être traités séparément ou regroupés en un seul de la liste avant de fusionner dans le tableau interne. Le tableau interne est ensuite fusionné pour ne former qu'une seule liste triée.
InformationsquelleAutor Awesomenuts | 2011-08-23