UNPKG

list-runner

Version:

a lightweight linked-list implementation that offers both Singly (next) and Doubly data structures (next and previous)

122 lines (88 loc) 2.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.countBackward = exports.countForward = exports.runBackward = exports.runForward = exports.findBackward = exports.findForward = exports.initializeStem = void 0; var _StemSingly = require("./classes/StemSingly"); var _StemDoubly = require("./classes/StemDoubly"); var _constants = require("./constants"); var initializeStem = function initializeStem(cells) { var structureType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.SINGLY; var Stem; switch (structureType) { case _constants.SINGLY: Stem = _StemSingly.StemSingly; break; case _constants.DOUBLY: Stem = _StemDoubly.StemDoubly; break; default: break; } var transientStem = new Stem(cells[0]); transientStem.interlink(cells); return transientStem; }; exports.initializeStem = initializeStem; var findForward = function findForward(baseline, comparator) { var breakLoop = false; var cell = baseline; do { breakLoop = comparator(cell); if (breakLoop) return cell; cell = cell.getNext(); } while (cell.type !== _constants.SENTINEL); return false; }; exports.findForward = findForward; var findBackward = function findBackward(baseline, comparator) { var breakLoop = false; var cell = baseline; do { breakLoop = comparator(cell); if (breakLoop) return cell; cell = cell.getPrev(); } while (cell.type !== _constants.SENTINEL); return false; }; exports.findBackward = findBackward; var runForward = function runForward(baseline, callBack, callBackParams) { var cell = baseline; var shortCircuit = null; do { shortCircuit = callBack(cell, callBackParams); cell = cell.getNext(); } while (cell != null && cell.type !== _constants.SENTINEL && !shortCircuit); return cell; }; exports.runForward = runForward; var runBackward = function runBackward(baseline, callBack, callBackParams) { var cell = baseline; var shortCircuit = null; do { shortCircuit = callBack(cell, callBackParams); cell = cell.getPrev(); } while (cell != null && cell.type !== _constants.SENTINEL && !shortCircuit); return cell; }; exports.runBackward = runBackward; var countForward = function countForward(baseline) { var count = 0; var nextCell = baseline; do { count++; nextCell = nextCell.getNext(); } while (nextCell != null && nextCell.type !== _constants.SENTINEL); return count; }; exports.countForward = countForward; var countBackward = function countBackward(baseline) { var count = 0; var nextCell = baseline; do { count++; nextCell = nextCell.getPrev(); } while (nextCell != null && nextCell.type !== _constants.SENTINEL); return count; }; exports.countBackward = countBackward;