读书人

【初学者】关于链表的创建有关问题

发布时间: 2013-04-09 16:45:09 作者: rapoo

【菜鸟求助】关于链表的创建问题
代码如下。
Node * Create()
{
int n = 0;
Node *head,*p1,*p2;
p1= new Node;
cin>>p1->data;
head = NULL;
while(p1->data!=0)
{
if(n == 0)
{
head = p1;
}
else
p2->next = p1; //为什么执行到这一步,会对head->next进行赋值?对p2->next的操作为什么会影
p2 =p1; //响到head?
p1 = new Node;
cin>>p1->data;
n++;
}
p2->next = NULL;
return head;
}
[解决办法]
这个问题看懂就好了,首先while循环第一次执行,n==0成立,head=p1执行,然后else语句跳过,执行p2=p1,这个时候p2,p1,head全都指向了同一个地方,当第二次执行while语句的时候,执行p2->next=p1,就相当于执行了head->next=p1,因为p2和head是同一个指针了。

读书人网 >C++

热点推荐