int OOLList::getListSize() {
int count = 0;
OOLNode* iterator = NULL;
// If the stack is empty return 0
if (this->start != NULL) {
count = 0;
}
// If the Stack isn't empty
else {
while (iterator->next != NULL) {
iterator = iterator->next;
count++;
}
}
return count;
}
我收到一个错误,显示"取消引用空指针'迭代器'"。 我做错了什么?
错误是因为您将iterator
初始化为 NULL,并且在访问iterator->next
之前未将其设置为其他任何内容。
据推测start
是列表中的第一个节点。 当start
不是 NULL(列表不为空(时,返回 0。当start
为 NULL(列表为空(时,您尝试迭代。你的逻辑是倒退的。
试试这个:
int OOLList::getListSize() {
int count = 0;
OOLNode* iterator = this->start;
while (iterator != NULL) {
++count;
iterator = iterator->next;
}
return count;
}
您在函数中将迭代器设置为 NULL,并且从未将其设置为其他任何内容,然后在 while 条件中取消引用指针。
你应该将迭代器分配给一些,比如迭代器 = start 而不是 NULL
我认为你做错了。您必须计算堆栈中的元素数量。这样做:
int OOLList::getListSize() {
int count = 0;
OOLNode* iterator = NULL;
iterator = start; // hope start is also OOLNode*
// If the stack is empty return 0
if (iterator== NULL) {
count = 0;
}
// If the Stack isn't empty
else {
while (iterator->next != NULL) {
iterator = iterator->next;
count++;
}
}
return count;
}