| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 662 人关注过本帖
标题:一趟快排(循环链表)源程序需要修改
只看楼主 加入收藏
pyc21
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-6-16
收藏
 问题点数:0 回复次数:2 
一趟快排(循环链表)源程序需要修改

下面的程序为什么不能排序阿,这样编行吗?



typedef struct lnode
{
int data1;
int data2;
int ncount; //记录当前节点是第几个节点,以便快速排序
struct lnode *next; //记录后继
struct lnode *front; //记录前驱
} lnode, *linklist;
//链表的初始化
void init_list(lnode * &l)
{
linklist p;
p=(lnode *) malloc (sizeof(lnode)) ;
if(!p)
{
cout<<"overflow!"<<endl;
return;
}
l=p;
p->front=p;
p->next=p;
p->ncount++;
return;
}
void quicksort(linklist &l,linklist start,linklist end)
{
linklist i=start;
linklist j=end; //设置左右指针

int value1=start->data1; //以多项式的幂作为关键字进行排序,并保存枢轴,幂
int value2=start->data2; //也是关键字
// cout<<value2<<endl; //ceshi
if(start->ncount<end->ncount)
{
// cout<<"正确"<<endl; //ceshui
do
{
while(i->ncount<j->ncount && j->data2>=value2)
j=j->front; //寻找大于枢轴的值,从表尾到表头
i->data1=j->data1;
i->data2=j->data2;
cout<<i->data2<<endl;

while(i->ncount<j->ncount && i->data2<=value2)
i=i->next; //寻找小于枢轴的值,从表尾到表头
j->data1=i->data1;
j->data2=i->data2;
}while(i->ncount<j->ncount); //一趟快排

i->data1=value1;
i->data2=value2; //到此实现了一趟快排
cout<<"枢轴:"<<value2<<endl;

//此时,start,end已经指向同一个单元,所以有下面的语句
//将枢轴填入其应在的位置
quicksort(l,start,j->front);
quicksort(l,j->next,end);
} //结束外层if语句
} //结束函数
搜索更多相关主题的帖子: 链表 
2007-01-14 17:06
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

void quicksort(node *head,node *rear)
{
node *p,*pre,*s;
p=head->next;/*保存该段中第一个节点(要进行比较的结点),进行遍历*/
s=p;/*遍历指针*/
pre=NULL;/*保存S的上一个结点*/
if(s!=rear) /*出口条件*/
{
while(s!=rear)/*做一次遍历*/
{
while(s!=rear&&s->info>=p->info)/*找一个比S小的节点*/
{
pre=s;s=s->next;
}/*pre保存当前S的上一个结点*/
if(s!=rear)/*找到要操作的结点*/
{
pre->next=s->next;/*把S取下*/
s->next=head->next;/*找到后将它插入到头节点后*/
head->next=s;
s=pre->next;
}
}
/*------函数递归-------*/
quicksort(head,p);
quicksort(p,rear);
}

}


倚天照海花无数,流水高山心自知。
2007-01-14 19:27
pyc21
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-6-16
收藏
得分:0 
谢谢斑竹,我已经修改了,呵呵

2007-01-16 11:13
快速回复:一趟快排(循环链表)源程序需要修改
数据加载中...
 
   



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

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