程序要求在双向链
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
上实现快速排序的递归算法
一、程序要求:在双向链表上实现快速排序的递归算法。 二、程序主体
//在双向链表上实现快速排序的递归算法。
#include
struct doulinklisttp{
int key;
doulinklisttp *pre;
doulinklisttp *next; };
void initiate(doulinklisttp &dulist)//初始化链表 {
dulist.next=NULL;
dulist.pre=NULL;
}
void create(doulinklisttp &dulist)//建立链表
{
int n;
doulinklisttp *p1,*p2;
cout<<"please input some numbers\n"
<<"ended the number list with \"-1\"\n";
cin>>n;
p1=new doulinklisttp;//读入第一个数,建立头结点
p1->key=n;
dulist.next=p1;
p1->pre=NULL;
cin>>n;
while (n>=0) //读入剩下的数字,建立完整的链表
{
p2=new doulinklisttp;
p2->key=n;
p2->pre=p1;
p2->next=NULL;
p1->next=p2;
p1=p1->next;
cin>>n;
};
}
void search(doulinklisttp dulist,doulinklisttp *&l,doulinklisttp *&h)//查找新建链表的第一个结
点和尾结点
{
l=dulist.next;
h=dulist.next;
while (h->next!=NULL)
h=h->next;
}
void quickpass(doulinklisttp *l,doulinklisttp *h,doulinklisttp *&i)//对链表进行第一趟排序 {
doulinklisttp *j;
int p;
i=l;
j=h;
p=i->key;
while (i!=j)
{
//当当前数大于枢轴记录关键字,指针向前移
while ((i!=j)&&(j->key>=p)) j=j->pre;
if (j->keykey=j->key; //当当前数小于枢轴记录关键字,前移当前关键字
//当当前数小于枢轴记录关键字,指针向后移
while ((i!=j)&&(i->key<=p)) i=i->next;
if (i->key>p) j->key=i->key; //当当前数大于枢轴记录关键字,后移当前关键字
}
i->key=p;
}
void quicksort(doulinklisttp *l,doulinklisttp *h,doulinklisttp *&i)//对整个链表第归排序 {
doulinklisttp *t2;
if (l!=h)
{
quickpass(l,h,i);
if (i!=l) quicksort(l,i->pre,t2);
if (i!=h) quicksort(i->next,h,t2);
}
}
void write(doulinklisttp dulist) {
doulinklisttp *w2;
w2=dulist.next;
while(w2!=NULL)
{
cout<key<<" ";
w2=w2->next;
};
cout<
本文档为【程序要求在双向链表上实现快速排序的递归算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。