我要做的是将一个带有值的节点插入到链表的第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;
}
}
答案 0 :(得分:4)
这是因为您按值传递指针。因此,在此函数中执行的更改将丢失。
而是将您的功能更改为: -
bool insertat(struct Node**head, int value,int loc)
并传递头部地址。
OR
bool insertat(struct Node*&head, int value,int loc)