リンク リスト、特にマージ パーツのマージ ソートの実装に問題があります。文字列を含むリンク リストを並べ替え、アルファベット順に並べ替えようとしています。ただし、私のマージ コードは、元のリストの順序によっては、何らかの理由でポインターをスキップすることがあります。現在私は持っています:
public node merge(node left, node right){
node result = null;
if(left == null){
return right;
}else if(right == null){
return left;
}
// The data in the node are stored as strings.
// Compare if the string in the left node is less that
// the string in the right.
if(left.info.compareTo(right.info) < 0){
result = left;
result.next = merge(left.next, right);
}else{
result = right;
result.next = merge(left, right.next);
}
return result;
}
たとえば、f->t->c->t->h で構成されるリストがあった場合、マージは h->t->t を返し、ポインタが失われます。ただし、リストが b->a->t->t->c で構成されている場合、a->b->c->t->t のようにアルファベット順に正しく表示され、ポインターが失われることはありません。
どんな助けでも大歓迎です。
ありがとう。