如图所示:
这种问题你是认真的吗。。。
首先你的描述有点问题,r本身就是一个指针,从头到尾没有任何指针指向r
然后:我包好了一个饺子放你手上,你手上只能拿一个饺子,无论我包完了多少饺子,你手上拿的是不是我最后一个包的呢
因为你的p节点是新增的节点,所以必然是尾巴节点,而尾插入为了保证插入始终是在尾巴节点因此在插入后必须保证r也同样是尾巴节点,所以当r->next = p执行之后,实际上的链表插入已经完成了,但是由于插入了新的节点,之前是尾节点的r现在不是尾节点了,那该怎么办呢?没事,p是新插入的尾节点啊,那就把p直接复制给r不就好了吗,于是r变成了尾节点,可以进行下一次的插入了
r->next = p
它这个应该是找尾和插入尾的过程:
r->next=p; //表尾链接 r=p; //r为上一次的链表的尾结点
因为它是从第一个开始新建的所以每次只用保存当前位置,比如第一个 1 为尾,的二个2为尾.... 它的找尾与新建结点的循环重叠了
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(3)
这种问题你是认真的吗。。。
首先你的描述有点问题,r本身就是一个指针,从头到尾没有任何指针指向r
然后:我包好了一个饺子放你手上,你手上只能拿一个饺子,无论我包完了多少饺子,你手上拿的是不是我最后一个包的呢
因为你的p节点是新增的节点,所以必然是尾巴节点,而尾插入为了保证插入始终是在尾巴节点因此在插入后必须保证r也同样是尾巴节点,所以当
r->next = p
执行之后,实际上的链表插入已经完成了,但是由于插入了新的节点,之前是尾节点的r现在不是尾节点了,那该怎么办呢?没事,p是新插入的尾节点啊,那就把p直接复制给r不就好了吗,于是r变成了尾节点,可以进行下一次的插入了它这个应该是找尾和插入尾的过程:
因为它是从第一个开始新建的所以每次只用保存当前位置,比如第一个 1 为尾,的二个2为尾.... 它的找尾与新建结点的循环重叠了