链表分割(解题报告)
来源:互联网 发布:程序员用什么鼠标好 编辑:程序博客网 时间:2024/06/06 08:28
题目描述
编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前
给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。
解题思路:用两个链表保存,一个大于等于x的链表,另一个是小于x的链表。最后合并两个链表即可。
注意分支的保存。
package link;public class Partition {public static void main(String [] args){ListNode pHead=new ListNode(6);pHead.next=new ListNode(2);pHead.next.next=new ListNode(8);pHead=partition(pHead,2);while(pHead!=null){System.out.println(pHead.val);pHead=pHead.next;}}public static ListNode partition(ListNode pHead, int x) { ListNode large=null; ListNode largetail=null; ListNode small=null; ListNode smalltail=null; ListNode current=pHead; while(current!=null){ if(current.val>=x){ if(large==null){ large=current; largetail=current; } else{ largetail.next=current; largetail=current; } } else { if(small==null){ small=current; smalltail=current; } else{ smalltail.next=current; smalltail=current; } } current=current.next; } if(small==null){ current=large; largetail.next=null; } else{ current=small; smalltail.next=large; if(large!=null){ largetail.next=null; } } return current; }}class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}
阅读全文
0 0
- 链表分割(解题报告)
- [解题报告]hdoj1249(平面分割)
- haoi2008木棍分割解题报告
- POJ1191 棋盘分割 ACM解题报告(DFS+DP)
- 回文链表(解题报告)
- HDOJ_2050 折线分割平面 解题报告
- HDU2050 折线分割平面解题报告
- 我学我体会(八) 折线分割平面解题报告
- hdoj 2050 折线分割平面解题报告(简单递推)
- 遍历链表 构造并升序输出(解题报告)
- HDU1010(解题报告)
- POJ(解题报告)
- HDU1262(解题报告)
- HDU2028(解题报告)
- (解题报告)HDU1000
- YT03-递推求解课堂题目-1002 折线分割平面-(6.7日-烟台大学ACM预备队解题报告)
- zju1086 (高精度)解题报告
- Poj1122解题报告(水~~~~)
- opencv入门
- ORA-01747: user.table.column, table.column 或列说明无效
- 第八届蓝桥杯省赛真题
- xtrabackup备份原理及注意事项
- 02-线性结构1 两个有序链表序列的合并 (15分)
- 链表分割(解题报告)
- 初识jQuery
- jQuery基础知识
- JavaScript内置对象
- Hdu 1560 解题报告 迭代加深搜索
- 马云2017年数博会全文实录:IOT、大数据将对传统制造业带来巨大的冲击!
- jQuery库包含的功能
- R语言执行T检验
- Unity3D基础知识梳理