无法在 c++ 链表的开头插入
Cannot insert at the beginning of c++ linked list
我正在尝试创建一个用于在链表开头插入的函数。我将我的代码与网络上的一些代码进行了比较,结果或多或少是相同的。但是,当我尝试使用 CodeBlock 编译它时,打印的输出只有数字 0。任何人都可以解释为什么insertFirst函数不起作用或显示错误(如果有)吗?
struct node{
int data;
struct node *next;
};
node insertFirst(node *head, int newData){
node *temp = new node;
temp -> data = newData;
temp -> next = head;
head = temp;
return *head;
}
int main(){
int i;
node *first, *cur;
first = new node;
first -> data = 0;
first -> next = 0;
for(i = 1; i <= 10; i++){
insertFirst(first, i);
}
cur = first;
while(cur){
cout << cur -> data << endl;
cur = cur -> next;
}
}
您的第一个将保留在第一位,因为您不会在调用中更新它。像这样定义你的函数:
node insertFirst(node *&head, int newData)
因此,您将在"head"指针上获得一个引用,并将其传递回调用函数。
我认为SHR想提到的是你更改了你的代码,例如
node* insertFirst(node *head, int newData){
node *temp = new node;
temp -> data = newData;
temp -> next = head;
return temp;
}
稍后你可以通过以下方式调用它
for(i = 1; i <= 10; i++){
first = insertFirst(first, i);
}
因此,该函数始终返回指向列表中第一个对象的指针。
in node insertFirst(node *head, int newData)
head 在参数中,而不是在 out 中。
因此,在main
它没有被改变。
以更新first
值的方式使用first = insertFirst(first, i);
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 如何在C++中.txt文件的开头插入字符串
- C++ 在字符的开头插入字符
- 使用代码块在链表的开头插入节点
- 为什么 C++ 中的分号在插入代码开头时不显示任何错误?
- 如何在单向链表的开头插入
- C++中的数据结构,插入链表中节点的开头
- 如何将元素插入矢量的开头
- 将节点插入链表只会转到开头或结尾
- 无法在 c++ 链表的开头插入
- 在 std::forward_list 的开头插入元素
- 如何在结果列表的开头插入生成的列表
- 在linkedList C++的开头插入
- 在另一个字符*C++的开头插入一个字符*
- 在 protobuf 列表的开头插入项目
- 在链表的开头插入时读取内存时出错
- 如何在矢量的开头插入元素
- 关于在链表开头插入节点(程序未正确执行)
- 如何将字符串插入到字符串流的开头