每天一个算法之合并有序链表
2016-10-26 09:59
274 查看
class listnode{
int data;
listnode next;
}
public class reorderoddeven {
public static void main(String args[]){
int[] a={1,3,5,7,9};
int[] b={2,4,6,8,10};
listnode list1=CreateList(a);
listnode list2=CreateList(b);
listnode newlist=union(list1,list2);
print(newlist);
}
public static void print(listnode l){
while(l!=null){
System.out.print(l.data+" ");
l=l.next;
}
}
public static listnode union(listnode l1,listnode l2){
//非空条件判断
if(l1==null){
return l2;
}
if(l2==null){
return l1;
}
listnode newlist=null;
//把小的加入新链表,其余的递归加入
if(l1.data<l2.data){
newlist=l1;
newlist.next=union(l1.next,l2);
}else{
newlist=l2;
newlist.next=union(l1,l2.next);
}
return newlist;
}
public static listnode CreateList(int[] n){
listnode head=new listnode();
head.data=n[0];
head.next=null;
listnode point=head;
for(int i=1;i<n.length;i++){
listnode node=new listnode();
node.data=n[i];
node.next=null;
point.next=node;
point=point.next;
}
return head;
}
}
int data;
listnode next;
}
public class reorderoddeven {
public static void main(String args[]){
int[] a={1,3,5,7,9};
int[] b={2,4,6,8,10};
listnode list1=CreateList(a);
listnode list2=CreateList(b);
listnode newlist=union(list1,list2);
print(newlist);
}
public static void print(listnode l){
while(l!=null){
System.out.print(l.data+" ");
l=l.next;
}
}
public static listnode union(listnode l1,listnode l2){
//非空条件判断
if(l1==null){
return l2;
}
if(l2==null){
return l1;
}
listnode newlist=null;
//把小的加入新链表,其余的递归加入
if(l1.data<l2.data){
newlist=l1;
newlist.next=union(l1.next,l2);
}else{
newlist=l2;
newlist.next=union(l1,l2.next);
}
return newlist;
}
public static listnode CreateList(int[] n){
listnode head=new listnode();
head.data=n[0];
head.next=null;
listnode point=head;
for(int i=1;i<n.length;i++){
listnode node=new listnode();
node.data=n[i];
node.next=null;
point.next=node;
point=point.next;
}
return head;
}
}
相关文章推荐
- 每天一个小算法(2)----合并两个有序链表
- 数据结构——算法之(033)(两个有序单链表合并为一个有序的单链表)
- 有序链表的合并--一个算法分享
- 每天一道LeetCode-----合并两个/多个有序链表为一个新链表
- 写程序。设ha和hb分别是两个带头结点的非递减有序单链表的头指针,试设计算法,将这两个有序链表合并成一个非递增有序的单链表。要求使用原链表空间,
- 将两个有序链表合并成一个有序链表
- K个有序链表共N个结点在O(NlgK)时间合并为一个新的有序链表实现文件C语言
- 合并k个有序链表,使其成为一个有序链表
- 将一个有序链表和一个无序链表合并,并按序号大小排序
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)
- 两个链表有序 合并成一个链表
- 递归实现合并两个有序链表成一个链表依然有序
- 将一个递增和递减的有序链表,用原空间合并成递增有序的链表-O(n)复杂度
- 9、单链表的合并,两个有序单链表,合并为一个有序链表。
- 假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并为一个按元素值递减 有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原装(即A表和
- 已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序,要求用递归方法进行。
- 将两个有序链表合并成一个有序链表——搜狐畅游笔试题归来
- 数据结构与算法之—链表(二) 有序单链表合并
- K个有序链表共N个结点在O(NlgK)时间合并为一个新的有序链表头文件C语言
- 每天学习一算法系列(13) (输入一个单向链表,输出该链表中倒数第k个结点)