摘要: 题目: 给定一个无序单链表的头节点head,实现单链表的选择排序。 要求:额外空间复杂度为O(1)。 程序:public static Node selectionSort(Node head){ Node samll=null;//最小的节点 Node tail=null;//排序部分尾部 Node cur=head;//未排序部分头部 Node smallPre=null... 阅读全文
posted @ 2016-03-08 21:50 小魔仙 阅读(491) 评论(0) 推荐(0) 编辑
摘要: 题目: 一个环形单链表从头节点head开始不降序,同时由最后的节点指回头节点。给定这样一个环形单链表的头节点head和整数num,请生成节点值为num的新节点,并插入到这个环形链表中,保证调整后的链表依然有序。 要求时间复杂度为O(N),额外空间复杂度为O(1)。 分析: 本题不算是很难,但是要注意最后返回头节点时要考虑到不同的情况。 有可能要插入的节点的值比头节点的值还小,此时返回的是要插入的节... 阅读全文
posted @ 2016-03-08 21:02 小魔仙 阅读(506) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定两个有序单链表的头结点head1和head2.请合并两个有序链表,合并后的链表依然有序,并返回合并后的链表的头结点。 例如: 0->2->3->7->null; 1->3->5->7->9->null; 合并后的链表为:0->1->2->3->3->5->7->7->9->null。 程序:public static Node merge(Node head1,Node head2){... 阅读全文
posted @ 2016-03-08 20:39 小魔仙 阅读(1645) 评论(0) 推荐(0) 编辑
摘要: 题目: 给定一个单列表的头部节点head,链表长度为N,如果N为偶数,那么前N/2个节点算作左半区,后N/2个节点算作右半区。如果N为奇数,那么前N/2个节点算作左半区,后N/2+1个节点算作右半区。左半区依次记作L1->L2->…,右半区从左到右依次记为R1->R2->…,请将单链表调整成L1->R1->L2->R2->…的形式。 程序: class Test{ public sta... 阅读全文
posted @ 2016-03-08 17:50 小魔仙 阅读(206) 评论(0) 推荐(0) 编辑