最近在写老师的课设,学生管理系统,还是很多东西学得到的。这里了分享一个c++链表的冒泡排序。
先上方法代码
Node *Chain::BubbleSort(Node *head)
{
Node *prev = head;
Node *cur = head ->next;
Node *ter = nullptr;
while(cur != ter)
{
while(cur ->next != ter)//不让它(cur)碰到最后的ter = nullpter
{
if (cur ->data > cur ->next ->data)
{
prev = cur;
cur = cur ->next;
}
else//结点交换位置
{
Node *temp = cur ->next;//用temp来保存好cur ->next的值
cur ->next = cur ->next ->next;
temp ->next = cur;
prev ->next = temp;
prev = temp;
}
}
ter = cur;//终点前置
//起点重置
prev = head;
cur = head ->next;
}
return prev;
}
这里的问题主要是else的那一段,其他都没啥太大问题。下面就来分析一下: