12.单链表排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.单链表排序的主要内容,如果未能解决你的问题,请参考以下文章

在java中使用单链表和冒泡排序进行编码

[程序员代码面试指南]链表问题-单链表的选择排序(选择排序)

单链表的排序

不使用交换的单链表中的选择排序

单链表快速排序

单链表快速排序