C++ 为什么头部不会改变-linkedlist实现

C++ 为什么头部不会改变-linkedlist实现,c++,visual-c++,linked-list,C++,Visual C++,Linked List,我要做的是在链表的第I个位置插入一个具有值的节点。如果插入成功,则必须返回true,否则返回false。我不明白的是如何添加到列表的开头。我尝试的根本没有插入它。问题在哪里 bool insertat(struct Node*head, int value,int loc){ Node *q = new Node; q->data=value; if(loc>list_length(head)){ insertlast(head,va

我要做的是在链表的第I个位置插入一个具有值的节点。如果插入成功,则必须返回true,否则返回false。我不明白的是如何添加到列表的开头。我尝试的根本没有插入它。问题在哪里

bool insertat(struct Node*head, int value,int loc){
    Node *q = new Node;     
    q->data=value;
    if(loc>list_length(head)){
        insertlast(head,value);
        return true;
    }
    else if(loc<=0){
        cout<<"invalid location";
        return false;
    }

    else if(loc==1){
        q->next=head;
        head=q;
        return true;
    }
    else{
        int i=1;
        Node*p =head;
        while( i<loc-1){
            p=p->next;
            i++;
        }
        q->next=p->next;
        p->next=q;
        return true;
    }
}

这是因为您正在按值传递指针。因此,在该函数中对head所做的更改将丢失

而是将您的功能更改为:-

bool insertat(struct Node**head, int value,int loc)
并传递头的地址


您需要bool insertatstruct Node*&head,int-value,int-loc{注意引用&!。为什么不只是一个引用?并且不需要更改当前代码
bool insertat(struct Node*&head, int value,int loc)