| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 660 人关注过本帖
标题:链表倒置的算法看不懂,求解释
只看楼主 加入收藏
泡vs泡happy
Rank: 2
等 级:论坛游民
帖 子:30
专家分:21
注 册:2013-11-1
结帖率:57.14%
收藏
已结贴  问题点数:20 回复次数:8 
链表倒置的算法看不懂,求解释
void reverse(Lisklist L){
 Lnode *p;
p=H->next;
H->next=NULL;
while(p){
 q=p;
 p=p->next;
 q->next=H->next;
 H->next=q;


}



}
2013-11-01 17:17
MissingLCY
Rank: 2
等 级:论坛游民
帖 子:5
专家分:42
注 册:2013-9-24
收藏
得分:0 
应该是错的吧
2013-11-01 18:23
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:5 
先理解一下实际插入头结点与第一个数据结点的方法。结合本题的方法:把原链表由p来指挥,原头结点置空以创建倒序的链表。先把要处理的结点保存到q,再由p指挥到原链表下个结点,此时按头结点插入法处理,如此等等 ,注意此函数的参数!

www.qunxingw.wang
2013-11-01 19:09
LiuFuMinH
Rank: 2
等 级:论坛游民
帖 子:12
专家分:45
注 册:2013-10-27
收藏
得分:5 
void CreateList(LinkList &L)       //将顺表逆置
{
LinkList p,q,s;
p=L->next;s=p;
q=p->next;
while(!(p->next==NULL))
{
p->next=p->next->next;
q->next=s;
s=q;
q=p->next;
}
L->next=s;
}
你试试这个
2013-11-02 13:26
LiuFuMinH
Rank: 2
等 级:论坛游民
帖 子:12
专家分:45
注 册:2013-10-27
收藏
得分:0 
感觉你那个是错的
2013-11-02 13:31
泡vs泡happy
Rank: 2
等 级:论坛游民
帖 子:30
专家分:21
注 册:2013-11-1
收藏
得分:0 
回复 2楼 MissingLCY
书上的,不会错
2013-11-02 23:08
爱编聪聪
Rank: 2
等 级:论坛游民
帖 子:26
专家分:20
注 册:2013-9-16
收藏
得分:10 
void reverse(Lisklist L){
 Lnode *p;
 p=H->next;  //这是带头结点的单链表,这句就是把链表的首结点给p
 H->next=NULL;//然后就是把链表从头结点后断开,于是原来的链表就分成了两部分,一部分只剩一个头结点
 while(p){   //再把另一部分上的结点一个一个摘下来,利用“头插法”,依次插到头结点后面,就是实现了逆序
 q=p;
 p=p->next;                  主要是利用了头插法能实现逆序的功能
 q->next=H->next;
 H->next=q;




2013-11-04 10:47
泡vs泡happy
Rank: 2
等 级:论坛游民
帖 子:30
专家分:21
注 册:2013-11-1
收藏
得分:0 
回复 7楼 爱编聪聪
好像通啦,头结点是一直从后往前走的吧,这点没想清楚,谢谢!
2013-11-04 11:30
泡vs泡happy
Rank: 2
等 级:论坛游民
帖 子:30
专家分:21
注 册:2013-11-1
收藏
得分:0 
回复 3楼 qunxingw
谢谢
2013-11-04 11:33
快速回复:链表倒置的算法看不懂,求解释
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.110094 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved