dengwen3 发表于 2017-7-2 14:13:17

12.单链表排序

  12.单链表排序
  思路:
  参见基本函数13://冒泡排序链表,具体的做法是“狸猫换太子”,即只交换节点中的值,对链表结构不做改动。
  void sortList(Node*& Head);



//链表排序
//排序的方法是不破坏结构,有“狸猫换太子”的意思,只进行value的交换,不破坏链表结构
void sortList(Node*& Head)
{
   int count=numOfNodes(Head);
   if(count==0||count==1)
   {
          return ;
   }
   //冒泡排序
   bool exchange;
for(int i=2;i<=count;i++)
   {   
          exchange=false;
          for(int j=count;j>=i;j--)
          {
               Node* p1=locateNodeI(Head,j);
               Node* p2=locateNodeI(Head,j-1);
               if(p1->value<p2->value)
               {
                  exchange=true;
                  swap(p1->value,p2->value);
               }
          }
          if(!exchange)
          break;
   }
}
页: [1]
查看完整版本: 12.单链表排序