シングル リンク リストの要素を (list->id などの値で) 並べ替えるにはどうすればよいですか? 私が思いついたアイデアは、最大値を見つけてそのインデックスを保存することです。次に、リストを反復処理して、*head ポインターがその要素を指すようにします...そして、この要素を最初の要素と交換します。最後の文...どうすればいいですか?
質問する
651 次
2 に答える
3
リストを「再リンク」して実際のリストノードの順序を変更するよりも、データを交換する方が簡単な場合がよくあります。
フィールドが整数の場合、次のようにすることができます。
static void swap_ids(ListNode *a, ListNode *b)
{
const int a_id = a->id;
a->id = b->id;
b->id = a_id;
}
于 2013-01-22T14:34:49.380 に答える
0
リストをソートする最良の方法は、マージソートを実装することだと思います。
それでも、あなたがやろうとしていることは選択ソートとして知られており、実行可能です (実際にはそれほど難しくありません)。リストの最小要素へのポインターを保持し、リンクを移動して head 要素の前に配置する必要があります (head も移動することを忘れないでください)。通常、単一のリンクされたリストの先頭へのポインターのみを保持するため、最小限の要素を選択する必要があると言っています。
于 2013-01-22T14:35:49.833 に答える