/**
 * File: ListNode.js
 * Created Time: 2022-12-12
 * Author: IsChristina (christinaxia77@foxmail.com)
 */

/**
 * Definition for a singly-linked list node
 */
class ListNode {
    val;
    next;
    constructor(val, next) {
        this.val = (val === undefined ? 0 : val);
        this.next = (next === undefined ? null : next);
    }
}

/**
 * Generate a linked list with an array
 * @param arr
 * @return
 */
function arrToLinkedList(arr) {
    const dum = new ListNode(0);
    let head = dum;
    for (const val of arr) {
        head.next = new ListNode(val);
        head = head.next;
    }
    return dum.next;
}

/**
 * Get a list node with specific value from a linked list
 * @param head
 * @param val
 * @return
 */
function getListNode(head, val) {
    while (head !== null && head.val !== val) {
        head = head.next;
    }
    return head;
}

module.exports = {
    ListNode,
    arrToLinkedList,
    getListNode
};
