|
<p>求一个C语言单链表的排序函数,很急很急</p>
<p><img src="http://img.baidu.com/img/iknow/icn_point.gif"> 悬赏分:0 -</p>
<p>解决时间:2010-8-10 13:42</p>
<p>升序!!!!只要函数,最好能有些注释(因为每人命名变量名的习惯都不一样)</p>
<p>谢谢啦!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</p>
<p>提问者: cgame5050 - 一级</p>
<p>最佳答案</p>
<p>用选择排序就行,代码如下。</p>
<p>链表结构如下:</p>
<p>typedef struct Node</p>
<p>{</p>
<p>T value;</p>
<p>struct Node *link;</p>
<p>}Node;</p>
<p>void selectSort(Node *node)</p>
<p>{</p>
<p>Node *cur; /*当前节点*/</p>
<p>Node *next; /*遍历未排序节点*/</p>
<p>Node *min; /*指向未排序节点中最小节点*/</p>
<p>T temp;</p>
<p>/*从头节点的下一个节点开始,一直到倒数第二个节点*/</p>
<p>for(cur = node->link; cur->link->link != 0; cur = cur->link)</p>
<p>{</p>
<p>min = cur;</p>
<p>/*从当前节点的下一个节点开始比较,找出最小值,用min指向,也就是找出未排序部分最小值放到已排序的下一位置*/</p>
<p>for(next = next->link; next != 0; next = next->link)</p>
<p>if(min->value > next->value)</p>
<p>min = next;</p>
<p>/*交换*/</p>
<p>temp = cur->value;</p>
<p>cur->value = min->value;</p>
<p>min->value = temp;</p>
<p>}</p>
<p>}</p>
<p>0</p>
<p>回答者:</p>
<p>songwanqiang - 七级 2010-7-25 10:06</p>
<p>我来评论>></p>
|
|