您好,欢迎来到帮我找美食网。
搜索
您的当前位置:首页在链表上进行直接选择排序算法的C++

在链表上进行直接选择排序算法的C++

来源:帮我找美食网
在链表上进行直接选择排序算法的C++描述如下: template

void LinkSelectSort ( sorlinktlist & table ) {

int p, q, prep, preq, h ; //这里的h相当与在顺序表上直接选择排序算法中的i, q相当与k, p相当于j

//preq是q的前驱,perp是p的前驱

h = table.Arr[0].getLink ( );//取待排序表的第1个结点的指针 table.Arr[0].setlink( -1 ); //形成初始有序链表 while ( h != -1 ) {//当待排序表不空时

q = preq = prep = h; //把待排序表的第1个结点看成是当前最大的 p = table.Arr[h].getLink ( ); //设置初始被考察结点p while (p != -1) {//当被考察结点p存在时

if ( table.Arr[p].getKey ( ) >= table.Arr[q].getKey ( ) ) { q = p ; //置当前结点p为最大结点}

preq = prep ; prep = p ;//p,q的前驱指针相应移动 p = table.Arr[p].getLink ( );//取下一个被考察结点p } // while (p != -1)

//接下来\"摘下\"结点q,并插入有序表中

if ( h = =q ) {//如果最大结点就是待排序表的第1个结点 h = table.Arr[h].getLink ( );//摘下

table.Arr[q].setLink ( table.Arr[0].getLink());

table.Arr[0].setLink ( q );//插在有序表的第1个结点前} else { table.Arr[preq].setLink ( table.Arr[q].getLink());//摘下 table.Arr[q].setLink ( table.Arr[0].getLink());

table.Arr[0].setLink ( q ); );//插在有序表的第1个结点前} }// while ( h != -1 ) }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- banwoyixia.com 版权所有 湘ICP备2023022004号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务