Google
 
资源下载 | 发布源码资源

已解决问题
c++反转链表
 
问题补充: 下面是书上一个反转链表的例题,但是看不懂,请大侠指教以下 template <class Type> void List<Type>::Invert() { ListNode<Type> *p = first, *q = 0;//first是链表的头节点 while(p){ ListNode<Type> *r = q; q = p; p = p->link; q->link = r; } first = q; }
提问者:tomore  提问时间:08-10-20 20:29  
 最佳答案
 的答案  ( 采纳时间: 70-01-01 08:00 )

 评论  回答时间: 70-01-01 08:00 
其他答案 (1)

这个程序主要是在循环里面 假设现在链是a->b->c的样子 那么开始r和q都是空的; 从a开始,所以p指向a, 操作a,所以q指向了a,为了不丢失b和b后面的链,把p指向了b 这时将a的下一个指向r,就是空的,链变成了 a b->c 下一轮循环: r每次都指向前一个节点(这次是a)就是上一轮q的位置 q要指向这一轮要操作的节点,就是上一轮p的位置 而p要变到下一个节点(c)上,以便下一循环提供节点的位置。 3个指针都就位后,把q(b)的下一个节点指向原来的前一个节点(a) 这样变成 a<-b c 依次类推,就翻转了整个链表
0 评论  回答时间: 1224510965 


关于我们 - 广告服务 - 联系我们 - 网站声明 - Archiver - WAP - TOP
Copyright (c) 2001-2010 kkbar.com. All rights reserved.  京ICP备10020589号