标题:请帮小弟一下
只看楼主
puvypm27
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-2-28
 问题点数:0 回复次数:1 
请帮小弟一下

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

不知该怎么做?

搜索更多相关主题的帖子: 节点 range next 表头 
2006-09-04 19:49
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
这和单链表排序是一样的吧.只是这里多用了一个指针域,同时不改变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-09-04 20:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-87981-1-1.html




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

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