我正在尝试计算链表中当前元素的数量


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;
}

相关内容

  • 没有找到相关文章

最新更新