私は現在、宿題にCとしてリンクリストをソートしようとしています。私は答えとしてコードスニペットを探しているわけではありません。私は自分自身を理解する価値があると理解しています。私は以下の関数を使ってsegfaultを受け取りました。なぜ誰かが私になぜそれを伝えることができたら本当に感謝します。私が把握できた最高のは、次の行に到達したときに、それが失敗しているということです。リンクされたリストを並べ替える(ミステリーセグメンテーション)
(頭部>値>頭部>ネクスト>値){
EDITがあれば:この行を変更(head-> next!= NULL & & head-> value> head-> next-> value){とsegfaultsを受け取りません。しかし、私の出力ヘッドポインタは私にリンクリストの最後のノードを与えています。ハルプ。
は、私はここから行くことがどこ全くわからないんだけど、右方向に少しでもナッジは非常に高く評価されるだろう。
struct node *sort_list(struct node *head) {
bool swapped ;
struct node * tmp , * orig ;
orig = head ;
if (head == NULL || head->next == NULL) return head ;
else {
do {
swapped = false ;
if (head->next != NULL && head->value > head->next->value) {
tmp = head ;
head = head->next ;
tmp->next = head->next ;
head->next = tmp ;
swapped = true ;
}
head = head->next ;
} while (swapped == true && head != NULL) ;
}
return orig ;
}
私はあなたの問題ではありませんが、私があなただったら私はスワップコードを取り、独自の関数に入れて 'swap(...)'関数を作成します。その後、あなたはそれが動作すると確信するまで、その機能をテストすることができます。一度それを持っていると、ソートロジックに集中することができます。それが現れているときは、それがあなたのソートロジックかスワップロジックかどうかを最初に突き止めなければなりません。 – corsiKa
デバッガの使い方を学ぶには、時間を費やすことになります。このような質問をする必要がなくなり、より多くの時間を短縮できます。 –
デバッガを習得するのではなく、私はそれをより良くする必要があります。私は私の前に長い道があります! – mmmeff