java合并两个有序链表_JS实现的合并两个有序链表算法示例
本文实例讲述了JS实现的合并两个有序链表算法。分享给大家供大家参考,具体如下:
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
可以直接运行的方案:
function Node(element) {
this.element = element;//当前节点的元素
this.next = null;//下一个节点链接
}
function List() {
this.head = new Node("head");//头节点
this.find = find;//查找节点
this.insert = insert;//插入节点
this.remove = remove;//删除节点
this.display = display;//显示链表
this.findPrevious = findPrevious; //查找前一个节点
}
//下面的函数是操作方法:对应List类构造函数中的名称
//查找给定节点
function find(item) {
var currNode = this.head;
while(currNode.element != item) {
currNode = currNode.next;
}
return currNode;
}
//向链表插入一个节点
function insert(newElement,item) {
var newNode = new Node(newElement);
var current = this.find(item);
if(current == null)
return console.log("can't find the item");
newNode.next = current.next;
current.next = newNode;
}
//删除节点
function remove(item) {
var prevNode = this.findPrevious(item);
if(prevNode.next != null)
prevNode.next = prevNode.next.next;
}
//从链表中删除节点时,我们先要找个待删除节点的前一个节点,找到后,我们修改它的 next 属性,使其不在指向待删除的节点,而是待删除节点的下一个节点。那么,我们就得需要定义一个 findPrevious 方法遍历链表,检查每一个节点的下一个节点是否存储待删除的数据。如果找到,返回该节点,这样就可以修改它的 next 属性了。
//查找带删除节点的前一个节点
function findPrevious(item) {
var currNode = this.head;
while(currNode.next != null && currNode.next.element != item) {
currNode = currNode.next;
}
return currNode;
}
//显示链表元素
function display() {
var current = this.head;
while(current.next != null) {
console.log(current.next.element);
current = current.next;
}
}
/**
* @param {Node} l1
* @param {Node} l2
* @return {Node}
*/
var mergeTwoLists = function(l1, l2) {
// 模仿链表的数据结构
var mergedHead = { element : -1, next : null },
cur = mergedHead;
while (l1 && l2){
if(l1.element <= l2.element){
cur.next = l1;
l1 = l1.next;
}
else {
cur.next = l2;
l2 = l2.next;
}
cur = cur.next;
}
cur.next = l1 || l2
return mergedHead.next;
};
let list1 = new List();
list1.insert(1,'head');
list1.insert(2,1);
list1.insert(4,2);
console.log(list1.display());
let list2 = new List();
list2.insert(1,'head');
list2.insert(3,1);
list2.insert(4,3);
console.log(list2.display());
console.log(mergeTwoLists(list1.head,list2.head))
感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码,查看运行效果。
希望本文所述对大家JavaScript程序设计有所帮助。
java合并两个有序链表_JS实现的合并两个有序链表算法示例相关推荐
- java求矩阵_java实现的n*n矩阵求值及求逆矩阵算法示例
本文实例讲述了java实现的n*n矩阵求值及求逆矩阵算法.分享给大家供大家参考,具体如下: 先来看看运行结果: java版的写出来了,用的跟c语言相同的算法,然后看看能不能以后加个框做成程序: imp ...
- 【数据结构与算法】之深入解析“将有序数组转换为二叉搜索树”的求解思路与算法示例
一.题目要求 给你一个整数数组 nums ,其中元素已经按升序排列,请你将其转换为一棵高度平衡 二叉搜索树. 高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树. ...
- 两个无序单链表,排序后合并成一个有序链表
两个无序单链表,排序后合并成一个有序链表 算法思想:用冒泡法,对链表1和2进行排序,对排序后的两个链表,从小到大进行循环,装入链表3中. #include<stdio.h> #includ ...
- java 合并算法思想_Java实现合并两个有序序列算法示例
本文实例讲述了Java实现合并两个有序序列算法.分享给大家供大家参考,具体如下: 问题描述 输入:序列A,其中a0,其中b0 算法思想 创建一个长度为r的数组R,将A中的序列看作是两个有序序列 B=A ...
- 两个非递减有序单链表La和Lb合并成一个非递增有序链表Lc
#include<iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> ...
- 有序链表和数组的合并
一:链表的合并 思路分析1(双指针解法) 1:定义两个指针遍历l1,l2分别指向第一条链表的头结点list1和第二条链表的头结点list2: 2:定义一个空节点preNode,用于连接两条有序链表,定 ...
- Leetcode链表题目笔记2 合并两个排序的链表
合并两个排序的链表:合并有序链表 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例: 输入:1->2->4, 1->3->4 输出:1-> ...
- python实现合并链表_python:16.合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 解析 构建列表 # -*- coding:utf-8 -*- # class ListNode: ...
- C/C++面试题—合并两个排序的链表【递归和循环两种方式】
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表, 当然我们需要合成后的链表满足单调不减规则. 解题思路 这道题既可以采用递归的方式,也可以采用循环的方式. 2者的思路都是殊途同归的. 合并 ...
最新文章
- oracle主备库sync模式,Oracle 探索DG备库undo工作模式
- Centos-6.7下_Oracle 11gR2静默详细安装过程及排错
- Zabbix添加Ping外网IP监控
- datagridview java_仅更新datagridview中的一个单元格
- keras 修仙笔记一
- 内存地址对齐提升程序性能
- 如何root安卓手机_你的手机你做主!免 ROOT 卸载安卓手机预装APP
- 如何在SAP里创建configurable material物料主数据
- 电脑配置及价格_游戏主机推荐 AMD锐龙R52600X配RTX2060组装电脑配置清单及价格
- Jdk1.8 JUC源码增量解析(2)-atomic-LongAdder和LongAccumulator
- PKU 学生的反馈 2009 –2
- Oracle中如何判断字符串是否全为数字
- 袁玉玮:简介人工智能在基金界的应用现状 (二)卖方交易员被冲击
- 使用FlyMcu ISP清除 STM32F411CE 芯片卡死
- 转:L298N的原理图以及程序实现
- usb声卡驱动_艾肯iCON ProDrive第三代USB声卡驱动全新发布!
- [转载]MySQL 中 char 与 varchar 能存多少汉字问题_-Chaz-_新浪博客
- 【FPGA教程案例61】硬件开发板调试1——初识FPGA开发板,通过verilog控制LED灯,按键开关等
- 「面向信仰编程」Draven 专访:像写代码一样,用树形的结构写文章
- MySQL函数关键字(五)子查询 ANY/SOME/ALL/IN/EXISTS/USING
热门文章
- 【渝粤教育】电大中专新媒体营销实务 (13)作业 题库
- 【渝粤教育】电大中专建设工程法规1作业 题库
- 【渝粤题库】广东开放大学 标准的研制与编制 形成性考核
- 【渝粤题库】国家开放大学2021春2625调剂学题目
- WIFI无线传输模块使用 ESP8266芯片方案接入云平台的方法
- java 80_【JavaWeb】80:js基础详解
- 【卷积码系列2】(n,k,m)卷积码的生成多项式矩阵系数转网格图描述(不使用MATLAB库函数)
- php文件显示不完整,github文件显示不全
- win mysql 2003错误_windows MySql 报1067错误 2003错误
- python最短路径例子_Python实现的多叉树寻找最短路径算法示例