您的位置:首页 > 理论基础 > 数据结构算法

程序员面试宝典之数据结构基础----④单链表排序(读后)

2012-10-03 11:19 447 查看
单链表的排序:排序的方法有很多种,可以根据排序时间复杂度或空间复杂度分,而对于单链表的排序,能交换的只能是相邻节点的值,这就让我想到,最好用冒泡排序。逻辑上最为简单,只需知道一个节点和他的下一个节点即可,只需一个辅助指针,排序时只是在相邻节点间互换节点值。

当然单链表的排序方法还很多,比如快速排序,只需两个节点指针,都从前往后遍历,每次都按照head节点值分开,而且效率比较高。比如选择排序也可以用。本例只给出冒泡排序算法:

node* sort_list(node* head)
{
node* p1;
int n;
int temp;
n = length(head);
if(NULL == head || NULL == head->next)
return head;
p1 = head;
for(int i = 0; i<n; i++)
{
p1 = head;
for(int j = 0; j< n-i; j++)
{
if(p1->data > p1->next->data)
{
temp = p1->data;
p1->data = p1->next->data;
p1->next->data = temp;
}
p1 = p1->next;
}
}

return head;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐