您的位置:首页 > 其它

单链表中的冒泡排序(无头节点)

2017-10-21 14:24 295 查看
//冒泡排序(无头节点)

template<typename T>

void chain<T>::bubblingSort()

{

chainNode<T>*pb, *pr, *pt, *pd, *pf;

pb = firstNode;

pr = firstNode->next;

pd = NULL;

pf = firstNode;

T temp;

bool swapped = true; // 在排列已经有序的情况下及时退出

while (pf->next!= pd&&swapped) //要保证至少有两个比较的元素

{

swapped = false;

pb = pf;

pr = pb->next;

if (pb->element > pr->element) //先处理头节点,直接进行数据交换

{

temp = pb->element;

pb->element = pr->element;

pr->element = temp;

swapped = true;

}

while (pr->next !=pd) //再处理第二个节点后面的节点,交换指针域

{

pt = pr->next;

if (pr->element > pt->element)

{

pb->next = pt;

pr->next = pt->next;

pt->next = pr;

swapped = true;

}

pb = pb->next;

pr = pb->next;

}

pd = pr;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: