| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 257 人关注过本帖
标题:请帮小弟一下
收藏  订阅  推荐  打印
puvypm27
Rank: 1
等级:新手上路
帖子:8
积分:180
注册:2006-2-28
请帮小弟一下

假定有一种带表头附加节点的链表,每个节点含三个域:data,next,range ,其中data为整型值域,next,range为指针域,现在所有节点已经由于next域链接起来,试编一算法,利用range域把所有节点按照其值从小到大的顺序链接起来,,由此域链接得到的单链表的表头指针保存在表头附加节点的range域中,

不知该怎么做?

2006-9-4 19:49
nuciewth
Rank: 12Rank: 12Rank: 12
等级:版主
帖子:9498
积分:94816
威望:93
来自:我爱龙龙
注册:2006-5-23

这和单链表排序是一样的吧.只是这里多用了一个指针域,同时不改变next指针的指向.


/*从链表中拆出节点,插入到一新链表中*/
nodelink paixu(nodelink*head1)
{
nodelink p,pre,s,q,head ;
p=*head1 ;
pre=NULL ;
head=NULL ;
s=head ;
q=NULL ;
while(p!=NULL)
{
pre=p->next ;
/*保留P的原值,以便下一次访问*/
//p->next=NULL;
if(head==NULL)head=p ;
else
{
s=head ;
q=NULL ;
/*没找到,下移*/
while((s!=NULL)&&(p->info<=s->info))
{
q=s ;
s=s->range ;
}
if(q==NULL)
{
p->range=head ;
head=p ;
}
else
{
p->range=s ;
q->range=p ;
}
}
p=pre ;
}
return(head);
}

/*我只把红色部分由原来的next改成range*/

倚天照海花无数,流水高山心自知。
2006-9-4 20:07
共有 256 人关注过本帖
发新话题
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.049151 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved