函数返回链表中的总数据
Function to return total data within a linkedlist C++
尝试在我的linkedlist类中实现一个函数,该函数将返回存储在列表中的数据总量。例如,包含5,10,20的linkedlist将返回35。
我的节点类包含getNextPtr和getData方法。
我实现了一个新的Node,并将其命名为currentPtr,并使其指向headPtr。
在编译我得到:"36请求成员getNextPtr在currentPtr是非类类型"
对于38和40也是一样的,38是currentPtr中的getData。
不太确定我错过了什么…
int LinkedList::getTotal()
{
int total = 0;
Node *currentPtr = headPtr;
(36) while(currentPtr.getNextPtr() != NULL)
{
(38) total += currentPtr.getData();
(40) currentPtr = currentPtr.getNextPtr();
}
return total;
}
这个想法是遍历链表,直到它到达指向null的tailptr,将它遇到的任何数据添加到total中。
希望这有意义,提前谢谢:)
如果你想解引用一个指针,你需要使用->
,而不是.
。你的代码变成:
while(currentPtr != NULL)
{
total += currentPtr->getData();
currentPtr = currentPtr->getNextPtr();
}
我也发现写while(currentPtr)
更自然(即。'虽然我有一个有效的指针'),而不是明确地测试NULL
。
首先,您应该使用->
而不是.
第二,你的代码有一个小错误。如果您到达最后一个节点,它是next
或NULL
,但该节点仍然有您忽略的数据。(因为你不去当ptr->next == NULL
。也就是说,您应该将条件更改为ptr != NULL
)
我建议使用以下代码之一:
如果列表的开头有一个虚拟节点(虚拟节点是没有数据的节点,只是在列表的开头)
int LinkedList::getTotal()
{
int total = 0;
Node *currentPtr = headPtr->getNextPrt();
while (currentPtr != NULL) // or simply while (currentPtr)
{
total += currentPtr->getData();
currentPtr = currentPtr->getNextPtr();
}
return total;
}
如果你没有虚拟节点,那就有点不同了:
int LinkedList::getTotal()
{
int total = 0;
Node *currentPtr = headPtr;
while (currentPtr != NULL) // or simply while (currentPtr)
{
total += currentPtr->getData();
currentPtr = currentPtr->getNextPtr();
}
return total;
}
currentPtr
是指针,而不是类类型(对象)。使用->
来访问它的成员,而不是.
。
while (currentPrt->getNextPtr()) { ...
代码Node *currentPtr...
声明了一个指向Node的指针。当通过指针访问对象的成员变量或函数时与这里的情况一样,您需要对指针解除引用。
在您的示例中,这意味着将.
成员访问器替换为->
while(currentPtr->getNextPtr() != NULL)
{
total += currentPtr->getData();
currentPtr = currentPtr->getNextPtr();
}
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 从函数返回任意简单类型的数据
- 通过 NIF 从C++返回自定义数据结构
- 为什么我们使用在C++中返回数据结构的函数?
- 将传入的网络"char*"数据转换为"uint8_t"并返回的安全方法是什么?
- 如何在模板中返回正确类型的数据?
- H5Tget_member_type() 返回复合 HDF5 数据类型的奇怪值
- 保持排序的数据结构,允许log N插入时间,并且可以返回我在log N中查找的元素的索引
- 如何通过另一个对象中的命令正确地从一个对象返回数据
- 查找存储在二叉搜索树的所有非叶子中的数据总和?(返回整数的独立递归函数
- 在C++中,运算符 sizeof 返回什么数据类型?
- 函数重载并根据相同的输入返回不同的数据类型
- 从新实例的向量中检索数据返回 0
- 类类型中的访问器函数未从 C++ 中的私有数据返回正确的值
- c++ 函数,将数据返回到引用向量
- UNIX域套接字C++服务器无法将数据返回到客户端
- 获取和设置内部数据:返回类型,错误情况下的行为
- 存储在char数组中的双精度数据返回浮点值
- QtCreator QMediaPlayer元数据返回空白QString
- 直接使用变量(数组中的数据返回相同)或与指针一起使用