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

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



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
pyc21
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-6-16
收藏
得分:0 
谢谢斑竹,我已经修改了,呵呵

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



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

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