为什么在inserhead函数中是l.head=p而不是p=l.如果p=l,头朝上.头,会有什么变化吗?请替我回答,谢谢



我得到一个错误和我的代码如下:为什么在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

例子假设你有两个var
int a = 5;
int b = 10;

现在如果你做a = b,a变成10而b保持不变,也就是10

,如果你做b = a,b变成5,a保持不变,即5

最新更新