1.35.0 • Published 2 years ago

singly-linked-list-typed v1.35.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

NPM GitHub top language npm eslint npm bundle size npm bundle size npm

What

Brief

This is a standalone Singly Linked List data structure from the data-structure-typed collection. If you wish to access more data structures or advanced features, you can transition to directly installing the complete data-structure-typed package

How

install

npm

npm i singly-linked-list-typed --save

yarn

yarn add singly-linked-list-typed

snippet

implementation of a basic text editor

    class TextEditor {
      private content: SinglyLinkedList<string>;
      private cursorIndex: number;
      private undoStack: Stack<{ operation: string; data?: any }>;

      constructor() {
        this.content = new SinglyLinkedList<string>();
        this.cursorIndex = 0; // Cursor starts at the beginning
        this.undoStack = new Stack<{ operation: string; data?: any }>(); // Stack to keep track of operations for undo
      }

      insert(char: string) {
        this.content.addAt(this.cursorIndex, char);
        this.cursorIndex++;
        this.undoStack.push({ operation: 'insert', data: { index: this.cursorIndex - 1 } });
      }

      delete() {
        if (this.cursorIndex === 0) return; // Nothing to delete
        const deleted = this.content.deleteAt(this.cursorIndex - 1);
        this.cursorIndex--;
        this.undoStack.push({ operation: 'delete', data: { index: this.cursorIndex, char: deleted } });
      }

      moveCursor(index: number) {
        this.cursorIndex = Math.max(0, Math.min(index, this.content.length));
      }

      undo() {
        if (this.undoStack.size === 0) return; // No operations to undo
        const lastAction = this.undoStack.pop();

        if (lastAction!.operation === 'insert') {
          this.content.deleteAt(lastAction!.data.index);
          this.cursorIndex = lastAction!.data.index;
        } else if (lastAction!.operation === 'delete') {
          this.content.addAt(lastAction!.data.index, lastAction!.data.char);
          this.cursorIndex = lastAction!.data.index + 1;
        }
      }

      getText(): string {
        return [...this.content].join('');
      }
    }

    // Example Usage
    const editor = new TextEditor();
    editor.insert('H');
    editor.insert('e');
    editor.insert('l');
    editor.insert('l');
    editor.insert('o');
    console.log(editor.getText()); // 'Hello' // Output: "Hello"

    editor.delete();
    console.log(editor.getText()); // 'Hell' // Output: "Hell"

    editor.undo();
    console.log(editor.getText()); // 'Hello' // Output: "Hello"

    editor.moveCursor(1);
    editor.insert('a');
    console.log(editor.getText()); // 'Haello'

API docs & Examples

API Docs

Live Examples

Examples Repository

Data Structures

Standard library data structure comparison

Benchmark

Built-in classic algorithms

Software Engineering Design Standards

2.0.3

5 months ago

2.0.1

7 months ago

2.0.0

8 months ago

1.53.4

9 months ago

1.53.3

9 months ago

1.53.6

9 months ago

1.53.5

9 months ago

1.53.8

9 months ago

1.53.7

9 months ago

1.53.9

9 months ago

1.54.3

8 months ago

1.54.2

8 months ago

1.53.0

9 months ago

1.53.2

9 months ago

1.53.1

9 months ago

1.54.1

9 months ago

1.54.0

9 months ago

1.52.9

10 months ago

1.52.5

10 months ago

1.52.6

10 months ago

1.52.8

10 months ago

1.52.4

10 months ago

1.52.3

11 months ago

1.52.2

12 months ago

1.52.1

1 year ago

1.52.0

2 years ago

1.51.9

2 years ago

1.51.8

2 years ago

1.51.7

2 years ago

1.51.5

2 years ago

1.51.4

2 years ago

1.51.0

2 years ago

1.51.2

2 years ago

1.51.1

2 years ago

1.51.3

2 years ago

1.50.9

2 years ago

1.50.8

2 years ago

1.50.7

2 years ago

1.50.6

2 years ago

1.50.5

2 years ago

1.50.4

2 years ago

1.50.3

2 years ago

1.50.2

2 years ago

1.50.1

2 years ago

1.50.0

2 years ago

1.49.9

2 years ago

1.49.5

2 years ago

1.49.7

2 years ago

1.49.6

2 years ago

1.49.8

2 years ago

1.49.4

2 years ago

1.49.3

2 years ago

1.49.2

2 years ago

1.49.1

2 years ago

1.49.0

2 years ago

1.48.6

2 years ago

1.48.5

2 years ago

1.48.8

2 years ago

1.48.7

2 years ago

1.48.9

2 years ago

1.37.0

2 years ago

1.37.3

2 years ago

1.37.4

2 years ago

1.37.2

2 years ago

1.37.7

2 years ago

1.37.8

2 years ago

1.37.5

2 years ago

1.37.6

2 years ago

1.37.9

2 years ago

1.40.0

2 years ago

1.44.0

2 years ago

1.44.1

2 years ago

1.48.0

2 years ago

1.48.2

2 years ago

1.48.1

2 years ago

1.48.4

2 years ago

1.48.3

2 years ago

1.38.2

2 years ago

1.38.0

2 years ago

1.38.1

2 years ago

1.38.6

2 years ago

1.38.7

2 years ago

1.38.4

2 years ago

1.38.5

2 years ago

1.38.8

2 years ago

1.38.9

2 years ago

1.41.1

2 years ago

1.41.0

2 years ago

1.41.3

2 years ago

1.41.2

2 years ago

1.45.1

2 years ago

1.41.5

2 years ago

1.45.0

2 years ago

1.41.4

2 years ago

1.45.3

2 years ago

1.41.7

2 years ago

1.45.2

2 years ago

1.41.6

2 years ago

1.41.9

2 years ago

1.41.8

2 years ago

1.39.1

2 years ago

1.39.2

2 years ago

1.39.0

2 years ago

1.39.5

2 years ago

1.39.6

2 years ago

1.39.3

2 years ago

1.39.4

2 years ago

1.42.0

2 years ago

1.42.2

2 years ago

1.42.1

2 years ago

1.42.4

2 years ago

1.42.3

2 years ago

1.46.2

2 years ago

1.42.6

2 years ago

1.46.1

2 years ago

1.42.5

2 years ago

1.42.8

2 years ago

1.46.3

2 years ago

1.42.7

2 years ago

1.46.6

2 years ago

1.46.5

2 years ago

1.42.9

2 years ago

1.46.8

2 years ago

1.46.7

2 years ago

1.36.0

2 years ago

1.36.4

2 years ago

1.36.5

2 years ago

1.36.3

2 years ago

1.36.8

2 years ago

1.36.9

2 years ago

1.36.6

2 years ago

1.43.1

2 years ago

1.43.0

2 years ago

1.43.3

2 years ago

1.47.1

2 years ago

1.47.3

2 years ago

1.47.2

2 years ago

1.47.5

2 years ago

1.47.4

2 years ago

1.47.7

2 years ago

1.47.6

2 years ago

1.47.9

2 years ago

1.47.8

2 years ago

1.35.1

2 years ago

1.34.2

2 years ago

1.34.3

2 years ago

1.35.0

2 years ago

1.34.1

2 years ago

1.34.6

2 years ago

1.33.7

2 years ago

1.34.7

2 years ago

1.33.8

2 years ago

1.40.0-rc

2 years ago

1.34.4

2 years ago

1.34.5

2 years ago

1.33.6

2 years ago

1.34.8

2 years ago

1.34.9

2 years ago

1.32.9

2 years ago

1.32.2

2 years ago

1.32.0

2 years ago

1.31.0

2 years ago

1.3.3

2 years ago

1.3.2

2 years ago

1.3.1

2 years ago

1.21.4

2 years ago

1.21.3

2 years ago

1.21.2

2 years ago

1.21.0

2 years ago

1.20.0

2 years ago

1.19.9

2 years ago

1.19.7

2 years ago

1.19.6

2 years ago

1.19.5

2 years ago

1.19.3

2 years ago