我得到一个错误和我的代码如下:为什么在inserhead函数中是l.head=p而不是p=l。如果p=l,头朝上。头,会有什么变化吗?请帮我回答谢谢
void InsertHead(list &l, int x)
{node *p ;`
p = GetNode(x) ;
if (p==NULL)
{
cout<<" node cannot be created!";
exit(1);
}
if (l.head==NULL)
l.head = l.tail = p ;
else
{
p->next = l.head ;
l.head = p ;
}
假设这是原始列表l->head = someenode当调用inserhead时首先应该创建一个新节点,调用GetNode,然后得到一个新节点p,然后将该节点添加到list中p->next = l->head (someenode)现在整个列表变成p-> someenode ->.....p ,但l→头不会改变。所以你应该调用l->head = p
l.head=p与p=l.head的区别
l.head = p
表示将p
的地址分配给l.head
和
p=l.head
表示将l.head
的地址分配给p
int a = 5;
int b = 10;
现在如果你做a = b
,a
变成10而b
保持不变,也就是10
,如果你做b = a
,b
变成5,a
保持不变,即5