我有一个CList链表
每个节点是由几个结构组成的 
我想通过某个结构中的两个元素对链表进行排序
即:先由第一个元素进行排序
如果第一个元素相同
再通过第二个元素进行判断
请问高手有这样的函数能实现吗?
如果没有,什么样的算法好!

解决方案 »

  1.   

    CList中存的是指针吗?如是,那:
    int nLen=List.GetSize();
    if(nLen>1)
    {
       int pArray=new int[nLen];
       for(int i=0;i<nLen;i++)
       {
          pArray[i]=List.GetAt(i);
        }
       //对pArray进行排序
       List.RemoveAll();   for(i=0;i<nLen;i++)
       {
          List.AddHead(pArray[i]);
        }
        delete [] pArray;------------------------------------------------
    排序可用堆,选择,快速都可以。
      

  2.   

    to cline :)可以给出算法的复杂度吗?谢谢!
      

  3.   

    堆: nlogn
           2
    因为链表定位比较耗时,所以先缓存于数组。 不知还有别的算法?
      

  4.   

    C语言库就有形成的呀,好象是qsort()
    这函数对任何类型都有效