博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode OJ 147. Insertion Sort List
阅读量:5064 次
发布时间:2019-06-12

本文共 1565 字,大约阅读时间需要 5 分钟。

Sort a linked list using insertion sort.

 

Subscribe to see which companies asked this question

解答

对于链表的插入排序,用tmp_tail遍历链表,每次的待插入数是tmp_tail->next的元素,待插入数必须从头开始比较,当然从头开始比较时要注意处理待排序数小于或等于链表首元素的情况,因为插入在链表的首元素之前与一般情况的插入不同,而如果待插入数插入在它之前的数列中,则用于遍历链表的指针tmp_tail不需要移动,这与数组不同,毕竟数组插入时是要将部分数组元素整体移动的,而链表不需要,将待插入数插入在前面的链表中后tmp_tail的下一个数就是待排序数,但是如果待插入数保持原位不动,则需要将tmp_tail后移一个,因为新的待插入数是原先待插入数的下一个数,判断待插入数是否在原位只需要在遍历结束后判断tmp_tail->next是否等于tmp_node(待插入数)即可。

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     struct ListNode *next; * }; */struct ListNode* insertionSortList(struct ListNode* head) {    struct ListNode *tmp_node, *tmp_head, *tmp_tail = head;        if(NULL == tmp_tail){        return head;    }    while(NULL != tmp_tail->next){        tmp_node = tmp_tail->next;        if(head->val >= tmp_node->val){            tmp_tail->next = tmp_node->next;            tmp_node->next = head;            head = tmp_node;        }        else{            tmp_head = head;            while(tmp_node != tmp_head->next){                if(tmp_head->next->val < tmp_node->val){                    tmp_head = tmp_head->next;                }                else{                    tmp_tail->next = tmp_node->next;                    tmp_node->next = tmp_head->next;                    tmp_head->next = tmp_node;                    break;                }            }            if(tmp_tail->next == tmp_node){                tmp_tail = tmp_tail->next;            }        }    }        return head;}

 

转载于:https://www.cnblogs.com/YuNanlong/p/6145576.html

你可能感兴趣的文章
数据结构3——浅谈zkw线段树
查看>>
Introduction to my galaxy engine 2: Depth of field
查看>>
Python 3.X 练习集100题 05
查看>>
设计器 和后台代码的转换 快捷键
查看>>
Monkey测试结果分析
查看>>
STL——配接器、常用算法使用
查看>>
STL容器之vector
查看>>
无法向会话状态服务器发出会话状态请求
查看>>
数据中心虚拟化技术
查看>>
01入门
查看>>
复习文件操作
查看>>
SQL Server 使用作业设置定时任务之一(转载)
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
发送请求时params和data的区别
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>
如何增强你的SharePoint 团队网站首页
查看>>
FZU 1914 Funny Positive Sequence(线性算法)
查看>>