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
JavaScript
;
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;