js合并两个有序的单链表135 246 =>123456

function listNode(val) {
  this.val = val;
  this.next = null;
}

var mergeTwoLists = function(l1, l2) {
  // 将l2的每个节点值和l1节点值比较,将l2的节点复制为新的节点插入l1
  while (l2) {
    var prev = null;
    // cur中存入l1的首个节点
    var cur = l1;
    // 如果cur存在且l2首个节点的值大于l1的首个节点的值
    while (cur && l2.val > cur.val) {
      // 就把l1的首节点存到prev中,l1的第二个节点存到cur中
      prev = cur;
      cur = cur.next;
    }

    var newNode = new listNode(l2.val);
    // 将新节点指向l1的第二个节点
    newNode.next = cur;

    // 如果有prev,则将prev指向新节点;若没有,则新节点作为首个节点存入l1
    if (prev) {
      prev.next = newNode;
    } else {
      l1 = newNode;
    }
    // 将原来l2的下一个节点存入l2
    l2 = l2.next;
  }
  return l1;
}
function add (node,data){
	if(!node.next){
		node.next = data
	}else{
		return add(node.next,data)
	}
}	
let a = new listNode('1');
add(a,new listNode('3'));
add(a,new listNode('5'));
add(a,new listNode('7'));
let b = new listNode('2');
add(b,new listNode('4'));
add(b,new listNode('6'));
add(b,new listNode('8'));

let c =mergeTwoLists(a,b);



while (c)
{
    console.log(c.val);
	c= c.next;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值