首页 > 代码库 > 12.单链表排序

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;     }}

  

12.单链表排序