无法在c ++链表的开头插入

时间:2017-10-25 13:21:01

标签: c++ linked-list

我正在尝试在链表的开头插入一个函数。我将我的代码与网络上的一些代码进行了比较,结果或多或少相同。但是,当我尝试使用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;
 }
}

3 个答案:

答案 0 :(得分:1)

你的第一个仍然是第一个,因为你没有在通话中更新它。像这样定义你的函数:

options.ClaimActions.Remove("exp");

所以你会得到一个关于你的“头”指针的引用,它会被传递回调用函数。

答案 1 :(得分:1)

我认为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);
}

所以函数总是返回指向列表中第一个对象的指针。

答案 2 :(得分:0)

node insertFirst(node *head, int newData)头中的

在参数中,而不是在out。

因此main没有改变。

以更新first值使用first = insertFirst(first, i);

的方式