@data-structure-algebra/doubly-linked-list
Version:
Doubly linked list for JavaScript
3 lines (2 loc) • 4.04 kB
JavaScript
function n(n,t,r){this.value=n,this.prev=t,this.next=r}function t(n,t){n.next=t,t.prev=n}function r(n,r){t(n.prev,r)}function e(n,t){(null==t||t>n.length)&&(t=n.length);for(var r=0,e=new Array(t);r<t;r++)e[r]=n[r];return e}function u(n,t){var r="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(!r){if(Array.isArray(n)||(r=function(n,t){if(n){if("string"==typeof n)return e(n,t);var r=Object.prototype.toString.call(n).slice(8,-1);return"Object"===r&&n.constructor&&(r=n.constructor.name),"Map"===r||"Set"===r?Array.from(n):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?e(n,t):void 0}}(n))||t&&n&&"number"==typeof n.length){r&&(n=r);var u=0,l=function(){};return{s:l,n:function(){return u>=n.length?{done:!0}:{done:!1,value:n[u++]}},e:function(n){throw n},f:l}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,f=!1;return{s:function(){r=r.call(n)},n:function(){var n=r.next();return i=n.done,n},e:function(n){f=!0,o=n},f:function(){try{i||null==r.return||r.return()}finally{if(f)throw o}}}}function l(t,r){const e=new n(r,t,null);return t.next=e,e}function o(n,t){let r=n;var e,o=u(t);try{for(o.s();!(e=o.n()).done;)r=l(r,e.value)}catch(n){o.e(n)}finally{o.f()}return r}function i(t,r,e){const u=new n(e,t,r);return t.next=u,r.prev=u,u}function f(n,t){return i(n,n.next,t)}function c(n,t){return i(n.prev,n,t)}function*a(n){let t=n;do{const n=t;t=n.next,yield n}while(null!==t)}function*s(n){let t=n;do{yield t,t=t.next}while(null!==t)}function v(n){let t=n;for(;null!==t.next;)t=t.next;return t}function p(n){let t=1,r=n.next;for(;null!==r;)++t,r=r.next;return t}function y(n){const t=n.prev;return t.next=null,t}function d(n){r(n,n.next)}function x(n){n.prev.next=null,n.prev=null}function h(n,r,e){x(r),t(e,n)}function w(n,t,r){let e=t;for(;--r;)e=e.prev;const u=e.prev;return h(n,e,t),[e,u]}function m(n,t,r,e){const u=e%r;return 0===u?[n,t]:w(n,t,u)}function b(n,t,r){let e=t,u=r;for(;--u;){if(e===n)return m(n,t,r-u,r);e=e.prev}const l=e.prev;return h(n,e,t),[e,l]}function g(n,t,r){let e=n;do{e=e.next}while(--r);const u=e.prev;return h(n,e,t),[e,u]}function A(n,t,r,e){const u=e%r;return 0===u?[n,t]:g(n,t,u)}function S(n,t,r){let e=n,u=r;do{if(e===t)return A(n,t,r-u+1,r);e=e.next}while(--u);const l=e.prev;return h(n,e,t),[e,l]}function j(n){const t=n.next;return t.prev=null,t}function E(t,r){const e=new n(r,null,t);return t.prev=e,e}function I(n,r,e){return null===n?e:(null===e||t(r,e),n)}function O(){return null}function C(t){const r=t[Symbol.iterator](),e=r.next();if(e.done)return null;const u=new n(e.value,null,null);return o(u,r),u}function*M(n){null!==n&&(yield*a(n))}function T(n){return null===n?null:v(n)}var U=n=>null===n?0:p(n);function $(n){if(null===n)throw new Error("input list is empty");return[null===n.prev?null:y(n),n]}function _(t,r,e){return null===t?new n(e,null,null):(l(r,e),t)}function k(n,t,r){return n===t||0===r?[n,t]:r>0?S(n,t,r):b(n,t,-r)}var q=(n,t,r)=>k(n,t,-r);function z(n){if(null===n)throw new Error("input list is empty");return[null===n.next?null:j(n),n]}function B(n,t){return n===t?[null,n]:null===t?[n,null]:(x(t),[n,t])}function D(t,r){return null===t?new n(r,null,null):E(t,r)}function*F(n){if(null!==n){var t,r=u(s(n));try{for(r.s();!(t=r.n()).done;){const n=t.value;yield n.value}}catch(n){r.e(n)}finally{r.f()}}}export{n as Node,t as _concat,r as _erase,o as _extend,f as _insertAfter,c as _insertBefore,i as _insertBetween,a as _iter,s as _iter_fast,v as _last,p as _len,y as _pop,l as _push,d as _remove,w as _rotate_left,m as _rotate_left_modulo,b as _rotate_left_unknown_length,g as _rotate_right,A as _rotate_right_modulo,S as _rotate_right_unknown_length,h as _rotate_to,j as _shift,x as _split,E as _unshift,I as concat,O as empty,C as from,M as iter,T as last,U as len,$ as pop,_ as push,q as rotate_left,k as rotate_right,z as shift,B as split,D as unshift,F as values};
//# sourceMappingURL=index.modern.js.map