1
二重のリストの符号の変更回数を取得する必要があります。たとえば、「1、-1、-1,1」のようなリストがある場合、隣接する要素の間に2つの符号の変更があります。私はこのようにそれを試してみましたが、私はそれをコンパイルしようとした場合、何らかの理由でプログラムがクラッシュする:Cのリストの符号の変化を数える
int number_of_sign_changes(DoubleList* list) {
int changes = 0;
for (DoubleNode *n = list->first; n != NULL; n = n->next) {
if ((n->value >= 0) && (n->next->value < 0)) {
changes += 1;
} else if ((n->value < 0) && (n->next->value >= 0)) {
changes += 1;
}
}
return changes;
}
ループは間違いなく動作します。私は他の機能で試してみましたが、ここではうまくいきません。誰にもアイデアはありますか?あなたは実際に2つのif文を1に入れることができました。
は 'N'がリスト内の最後のノードであるときに何が起こるかについて考え、そして 'N-> next'はヌルポインタです。 –
ありがとうございました! – NoIdea