欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

以下代码是链表排序代码,请教它们是根据什么信息(什么内容)进行排序的

更新时间: 2014-01-05 03:10:33 责任编辑: Author_N1

 

以下代码是链表排序代码,请问它们是根据什么信息(什么内容)进行排序的?
以下代码是链表排序代码,请问它们是根据什么信息(什么内容)进行排序的?

Q3  链表排序


 1 double cmp(ListNode *p ,ListNode *q)
 2 {return (p->keyVal - q->keyVal);}
 3 
 4 ListNode* mergeSortList(ListNode *head)
 5 {
 6     ListNode *p, *q, *tail, *e;
 7     int nstep = 1;
 8     int nmerges = 0;
 9     int i;
10     int psize, qsize;
11     if (head == NULL || head->next == NULL)
12     {return head;}
13     while (1)
14     {   p = head;
15         tail = NULL;
16         nmerges = 0;
17         while (p)
18         {   nmerges++;  q = p;  psize = 0;
19             for (i = 0; i < nstep; i++)
              {
20                 psize++;
21                 q = q->next;
22                 if (q == NULL)break;
23             }
24             qsize = nstep;
25             while (psize >0 || (qsize >0 && q))
26            {
27               if (psize == 0)
                 {
                    e = q; q = q->next; qsize--;
                  }
28                 else
                     if (q == NULL || qsize == 0)        
                     {
                       e = p; p = p->next; psize--;
                     }
29                   else
                       if (cmp(p,q) <= 0)
                       {
                          e = p; p = p->next; psize--;
                        }
30                     else
                        {
                           e = q; q = q->next; qsize--;
                         }
31                 if (tail != NULL)
                      {
                           tail->next = e;
                       }
32                 else{head = e;}
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:10:33
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/19169/
本文WWW.DOC100.NET DOC100.NET版权所有。