/**
*
* @param {ListNode} ans:输入的answer
* @param {ListNode} target:答案
* @param {number} index:报错标记符
*/
const ensure = (ans, target, index) => {
let ansTemp = ans;
let targetTemp = target;
while (ansTemp !== null && targetTemp !== null) {
if (ansTemp.val !== targetTemp.val) {
wrongMsg(ans, target, index);
break;
} else {
ansTemp = ansTemp.next;
targetTemp = targetTemp.next;
}
}
};
/**
*
* @param {Array} arr
* @returns {ListNode}
*/
var Lists = function(arr) {
function ListNode(val) {
this.val = val;
this.next = null;
}
let List = null;
const insertNode = function(List, newNode) {
if (List.next === null) {
List.next = newNode;
} else {
insertNode(List.next, newNode);
}
};
const insert = function(val) {
const newNode = new ListNode(val);
if (List === null) {
List = newNode;
} else {
insertNode(List, newNode);
}
};
arr.forEach(itemVal => insert(itemVal));
return List;
};
const TEST_DATA = [
{
inputs: [[1, 2, 4], [1, 3, 4]],
target: Lists([1, 1, 2, 3, 4, 4])
}
];
// ========== test ===========
const test = () => {
for (let index = 0; index < TEST_DATA.length; index++) {
const test = TEST_DATA[index];
const l1 = Lists(test.inputs[0]);
const l2 = Lists(test.inputs[1]);
const ans = mergeTwoLists(l1, l2);
ensure(ans, test.target, index);
}
};