首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-04-09 
【菜鸟求助】关于链表的创建问题代码如下。Node * Create(){int n 0Node *head,*p1,*p2p1 new Nodecin

【菜鸟求助】关于链表的创建问题
代码如下。
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是同一个指针了。

热点排行