这是我的列表结构:
typedef struct Header {
struct Header* next;
char empty;
int storageSize;
} Header;
我正在遍历一个列表来检查它有多少元素:
int listSize(Header* _header) {
int count = 0;
while(_header->next) {
_header = _header->next;
++count;
}
return count;
}
到达列表末尾后出现段错误。 但是,如果我将其更改为:
int listSize(Header* _header) {
int count = 0;
while(_header->next) {
if(!_header->next) {
_header = _header->next;
++count;
}
else
break;
}
return count;
}
它没有段错误,但显然也没有正确计算元素。
最佳答案
改变这个:
while(_header->next) {
为此:
while(_header) {
因为你想遍历你的列表,只要当前节点不是NULL
。
您正面临段错误,因为您正试图获取 NULL
的 next
数据成员。
感觉就像您正在将一个空列表传递给您的listSize()
,也就是说_header
是NULL
,并且您正在尝试获取 NULL
的 next
数据成员,因此出现段错误。
关于遍历列表时出现 C 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39628680/