#include <stdio.h>
#include <stdlib.h>
typedef struct int_node IntNode;
struct int_node {
int val;
IntNode* next;
};
typedef struct int_list IntList;
struct int_list {
IntNode* front;
};
int are_all_odd(IntList* list_ptr);
int main(void) {
IntList list = create_list();
insert_back(&list, 10);
insert_back(&list, 71);
insert_back(&list, 9);
print_list(&list);
free_list(&list);
insert_back(&list, 5);
insert_back(&list, 6);
insert_back(&list, 7);
insert_back(&list, 8);
free_list(&list);
return 0;
}
int are_all_odd(IntList* list_ptr){
IntNode* current_node = list_ptr->front;
if(current_node == NULL){
return 1;
}
while(current_node != NULL){
if(current_node->val%2){
return 0;
}
我目前正在处理函数are_all_odd,我希望有一个函数,它将指针指向一个整数列表,如果列表中的所有元素都是奇数,则返回1,如果所有元素都为偶数,则返回0。。。但我不知道如何找到偶数,因为它会弹出一个错误。。。对于返回0,我是否只与val%2相同?或者我该怎么办?有人能帮我建议或给我一个我应该如何修复它的编辑版本吗?
您的条件是测试当前值是否为奇数,而不是偶数。您需要检查模量是否等于0
。
如果你在循环中不返回0
,那么所有的数字都必须是奇数,所以你返回1
。
一开始不需要if
语句,因为如果列表为空,while
循环将立即停止,您将转到return 1
语句。
int are_all_odd(IntList* list_ptr){
IntNode* current_node = list_ptr->front;
while(current_node != NULL){
if(current_node->val%2 == 0){
return 0;
}
current_node = current_node->next;
}
return 1;
}