对单链表实现就地逆置

  
Status ListOppose_L(LinkList &L)
{
LinkList p,q;
p=L;
p=p->next;
L->next=NULL;
while(p){
q=p;
p=p->next;
q->next=L->next;
L->next=q;
}
return OK;
}

程序是这样的,我查了网上的一些博客但是始终搞不懂while语句中的这部分是做什么的,网上一些人说是L始终指向最后一个节点,但是我画图出来不对呀?请大神帮助解答一下,要是有图就更好了,先谢谢!

brayden
brayden
6577
编辑于2014-01-24
评论 (0)链接2014-01-24 

就是遍历链表, 每次把节点加到 头节点后.
比如开始:
L -> 1 -> 2 -> 3 -> NULL

循环:
L -> NULL
L -> 1 -> NULL
L -> 2 -> 1 -> NULL
L -> 3 -> 2 -> 1 -> NULL

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2014-01-24

个人认为这个程序前提条件是链表为带头节点的链表
你可以根据这个去纸上画画就知道L指向什么,while循环在做什么了。

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2014-03-13
德问是一个专业的编程问答社区,请 登录注册 后再提交答案