java 合并两个有序单链表

package datastruct.uselikedlist;
/**
 *  合并两个单链表
 *
 */
 class ListNode{
	 int val ;
	 ListNode next;
	 public ListNode(int x) {
		 this.val=x;
	}
 }
public class MergeTwoOfLikedList {
	ListNode head=null;
	//往ListNode 中添加节点
	public void add(int data){
	  ListNode newNode=new ListNode(data);
	  //添加头结点
		if (head==null) {
			head=newNode;
			return;
		}
	  //添加头结点以外的其他结点	
		ListNode temp=head;
		while (temp.next!=null) {
			temp=temp.next;
		}
		temp.next=newNode;
	}
	
	//打印结点
	public void printNode(ListNode head){
		ListNode temp=head;
		while(temp!=null){
			System.out.print(temp.val+" ");
			temp=temp.next;
		}
	}
	//合并两个链表
    public ListNode  mergeTwoLists(ListNode l1,ListNode l2) {
    	//如果ListNode l1 中的所有节点都被合并进去,合并l2
    	if (l1==null) {
			return l2;
		}
    	//如果ListNode l2 中的所有节点都被合并进去,合并l1
    	if (l2==null) {
			return l1;
		}
    	ListNode list=null;//用来存放合并的链表
    	//选择ListNode l1,ListNode l2中较小的结点进行合并
    	if (l1.val<l2.val) {
	        list=l1;
	        list.next=mergeTwoLists(l1.next, l2);
		}else {
			list=l2;
			list.next=mergeTwoLists(l1, l2.next);
		}
		return list;
	}
    public static void main(String[] args) {
		MergeTwoOfLikedList l1=new MergeTwoOfLikedList();
		l1.add(1);
		l1.add(3);
		l1.add(5);
		MergeTwoOfLikedList l2=new MergeTwoOfLikedList();
		l2.add(2);
		l2.add(4);
		l2.add(6);
		ListNode list=l1.mergeTwoLists(l1.head, l2.head);
		//打印合并后的list
		MergeTwoOfLikedList merge=new MergeTwoOfLikedList();
		merge.printNode(list);
	}
}
 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值