游动指针h ; 待插入节点指针pt
节点插入关键:h.next = pt; 不可能是h = pt, 链到指针的末尾没用呀,要链到节点末尾
默认无头结点,无头结点的思路:
三种可能
1. 比较头部
2. 循环比较中间
3. 追加末尾
为何比较头节点:因为循环中间部分的时候没有比较头节点
while (h.next != null) { //比较有序部分
整体代码:
package linkedList;
/**
* Definition for singly-linked list.
* public class ListNode
* {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
* @
*/
public class Solution {
public ListNode insertionSortList(ListNode head) {
if (head == null || head.next == null)
return head;
ListNode c = head.next; //未排序游动指针C
head.next = null;
ListNode pt, h; //pt:临时节点指针,h:已排序部分游动指针
while (c != null) {
pt = c;
c = c.next;
pt.next = null;
if (head.val > pt.val) { //比较头部
pt.next = head;
head = pt;
continue;
}
h = head;
while (h.next != null) { //比较有序部分
if (h.next.val > pt.val) {
pt.next = h.next;
h.next = pt;
break;
}
h = h.next;
}
if (h.next == null) { //追加末尾
h.next = pt;
}
}
return head;
}
}
分享到:
相关推荐
稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、...
7.2 插入排序 7.3 快速排序 7.4 排序最快有多快 7.5 归并排序 7.6 堆排序 7.7 多关键字排序 7.8 链表排序和索引表排序 7.9 内部排序小结 7.10 外部排序 7.11 参考文献和选读材料 第8章 Hash法 8.1 引言 ...
2、插入排序 3、选择排序 4、归并排序 5、快速排序 6、桶排序、计数排序,基数排序 五、查找算法 1、二分查找 ①求一个数的平方根,精确到小数点后六位。二分查找实现,牛顿迭代法实现。 ②变体1:查找第一个值等于...
稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀、后缀表达式、中缀表达式转换为后缀表达式、递归与回溯、迷宫问题、八皇后问题、算法的时间复杂度、冒泡排序、选择排序、...
单向链表 一个节点指向下一个节点 双向链表 一个节点有两个指针域 自由主题 循环链表 能通过任何一个节点找到其他所有的节点,将两种(双向/单向)链表的最后一个结点指向第一个结点...
单向链表 1.2 双向链表 1.3 单向环形链表(约瑟夫问题) 2.栈 2.1 数组模拟栈 2.2 实现统合计数器 3.递归 3.1 打印问题 3.2 阶乘 3.3 两个案例:迷宫、八皇后 4.排序算法 4.1 冒泡排序 4.2 选择排序 4.3 插入排序 ...
list下有双向链表、单向循环链表约瑟夫问题、单向链表 queue queue下面有普通的队列(是很浪费空间并且有毛病的)、正常使用的队列 sparseArray sparseArray下面是稀疏数组转换和恢复的例子 stack stack里面是数组栈...
通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 8、EJB是基于哪些技术实现的?并说出Session...
通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 11、EJB是基于哪些技术实现的?并说出...
3.1 单向链表19 3.1.1 头指针的修改20 3.1.2 遍历21 3.1.3 插入与删除22 3.2 双向链表24 3.3 循环链表24 3.4 面试例题:堆栈的实现25 3.5 面试例题:链表的尾指针31 3.6 面试例题:对RemoveHead函数进行纠错...
3.1 单向链表19 3.1.1 头指针的修改20 3.1.2 遍历21 3.1.3 插入与删除22 3.2 双向链表24 3.3 循环链表24 3.4 面试例题:堆栈的实现25 3.5 面试例题:链表的尾指针31 3.6 面试例题:对RemoveHead函数进行纠错...
2012-06-11 20:57 2,442 单向链表.txt 2012-06-11 21:10 10,962 单片机控制的仓库粮食害虫检测报警系统.rar 2012-06-11 21:44 0 哈希表实例.zip 2012-06-11 21:13 1,001,214 坦克游戏源代码.zip 2012-06-11 21:17 ...