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;
}
루프가 올바르게 동작한다. 나는 다른 기능에서 시도했지만 여기서는 효과가 없을 것이다. 누구나 아이디어가 있습니까? Btw를 사용하면 실제로 2 if 문을 1에 넣을 수 있습니다.
가'n'이 목록의 마지막 노드가있을 때 일어나는 일에 대해 생각하고,'N-> next '는 널 포인터입니다. –
감사합니다! – NoIdea