编译器错误递归链表
Compiler error recursion linked list
int insert(node* head) {
if (head == NULL) {
node* temp = new node;
if (head == NULL) {
cout << "Error";
return 0;
}
temp->data = 20;
temp->next = NULL;
} else {
temp->next = insert(temp->next);
}
return (temp);
}
我正在尝试递归添加节点,但错误temp was not declared
.我不明白为什么会出现此错误。当我总是这样定义temp
时node* temp = new node;
但现在我遇到了错误。
局部
变量仅在声明它们的作用域内可见,并且您在第一个if
语句中声明temp
。您需要将定义移到 if
子句之外:
int insert(node* head)
{
node* temp=new node; // <- move to here
if(head==NULL)
{
...
}
else
{
...
}
return temp;
}
您的代码似乎存在多个问题:
int insert(node* head) {
if (head == NULL) {
node* temp = new node; // Newly created node will not be used at all
if (head == NULL) { // as head is NULL it will return 0
cout << "Error";
return 0;
}
temp->data = 20; // Code unreachable
temp->next = NULL;
} else {
temp->next = insert(temp->next); // Here you will again get an error for temp not declared
}
return (temp);
}
相关文章:
- 使用双指针和递归反转链表
- 使用类进行实现时,递归打印C++中的链表
- 以递归方式从链表中删除节点
- 重载 == 以递归方式比较两个链表
- 链表中的递归长度函数实现
- 递归解决方案,用于显示线性链表数组
- 使用递归从尾部开始反转链表
- C++ 循环链表的递归基本情况
- 编写递归算法以从链表中删除元素.编写递归算法以将元素添加到链表中
- 尝试使用递归和指针到指针反转链表,但反转函数没有给出预期的正确输出
- 以C++递归方式对链表中的元素求和
- 使用递归的二维链表复制构造函数
- 反向链表的递归函数(代码段说明)
- 递归复制链表
- 链表的递归析构函数
- 反转链表递归
- 链表递归和数组
- 通过注册表递归的最佳方法(c++)
- 链表递归插入函数
- C++链表递归问题