在链接列表中查找元素 - C++
Finding an Element in a LinkedList - C++
我正在尝试编写一个函数find(Node* node,int valueInput(,该函数从给定节点开始,并返回值为valueInput的节点索引,如果valueInput不存在,则返回-1。
这是代码
#include <iostream>
class Node {
public:
int value;
Node* next = NULL;
};
int find(Node* node, int valueInput)
{
Node* tempNode = node;
int count = 0;
while (tempNode != NULL)
{
if (tempNode->value == 0)
{
break;
}
++count;
tempNode = tempNode->next;
}
return -1;
}
int main()
{
int valueInput, currentValue;
int listValues;
char arrow;
Node* node1, * previous, * head;
std::cin >> valueInput;
std::cin >> currentValue;
node1 = new Node();
node1->value = currentValue;
node1->next = NULL;
previous = node1;
head = node1;
while (std::cin)
{
std::cin >> arrow;
std::cin >> arrow;
std::cin >> currentValue;
node1 = new Node();
node1->value = currentValue;
previous->next = node1;
previous = node1;
}
std::cout << find(head, valueInput);
}
目前,我的程序总是返回 -1 示例输入和输出:
示例输入: 5 1->2->5
示例输出: 阿拉伯数字
这是因为您的代码只有一个return -1
语句。你应该return count
而不是break
.此外,您总是与0
进行比较,而不是valueInput
int find(Node* node, int valueInput)
{
Node* tempNode = node;
int count = 0;
while (tempNode != nullptr)
{
if (tempNode->value == valueInput)
{
return count;
}
++count;
tempNode = tempNode->next;
}
return -1;
}
您还应该使用nullptr
而不是NULL
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 使用不带参数的函数访问结构元素
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- C++如何通过用户输入删除列表元素
- lower_bound()返回最后一个元素
- 基于多个条件处理地图中的所有元素
- 调整大小后指向元素值的指针unordered_map有效?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 使用函数"remove"删除重复元素
- 具有最大子序列大小的序列,每个元素都相同
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将元素添加到数组的线程安全函数?
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- 我想访问std::unique_ptr中的一个特定元素
- 如何通过 getter 函数删除矢量的元素?
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 从控制台中删除最后打印的元素
- 擦除while循环中迭代的元素