【发布时间】:2017-10-25 13:21:01
【问题描述】:
我正在尝试创建一个用于在链表开头插入的函数。我已经将我的代码与网络上的一些代码进行了比较,结果或多或少是相同的。但是,当我尝试使用 CodeBlocks 编译它时,打印的输出只有数字 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;
}
}
【问题讨论】:
-
您是否尝试使用调试器单步执行您的代码,以找出它在哪里做了您没想到的事情?更新:我建议阅读good C++ book。
insertFirst中的head是一个本地副本,一旦函数返回,对它所做的任何分配 (head = temp;) 都会丢失。您的意思是通过引用传递吗?
标签: c++ linked-list