void BubbleSortNode(SListNode *&pHead)//单链表排序
{
 assert(pHead);
 SListNode *tail = NULL;
 int Bool = 0;  //若没有进行交换提前返回

 while (tail!=pHead->next)
 {
  Bool = 0;
  SListNode *tmp = pHead;
  SListNode *tmpnext = tmp->next;
  while (tmp->next != tail)
  {
   if (tmp->data > tmpnext->data)
   {
    DataType x = tmp->data;
    tmp->data = tmpnext->data;
    tmpnext->data = x;
    Bool = 1;
   }
   tmp = tmp->next;
   tmpnext = tmpnext->next;
  } 
  if (Bool == 0)// 已排好序提前返回
   return;
  tail = tmp;
 }
}

wKioL1aKmlLQOfJ4AAAe5kC0e6w428.png