2.0.3 • Published 4 months ago

singly-linked-list-typed v2.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months 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

4 months ago

2.0.1

5 months ago

2.0.0

6 months ago

1.53.4

7 months ago

1.53.3

7 months ago

1.53.6

7 months ago

1.53.5

7 months ago

1.53.8

7 months ago

1.53.7

7 months ago

1.53.9

7 months ago

1.54.3

6 months ago

1.54.2

7 months ago

1.53.0

7 months ago

1.53.2

7 months ago

1.53.1

7 months ago

1.54.1

7 months ago

1.54.0

7 months ago

1.52.9

8 months ago

1.52.5

8 months ago

1.52.6

8 months ago

1.52.8

8 months ago

1.52.4

8 months ago

1.52.3

9 months ago

1.52.2

10 months ago

1.52.1

10 months ago

1.52.0

1 year ago

1.51.9

1 year ago

1.51.8

1 year ago

1.51.7

1 year ago

1.51.5

1 year ago

1.51.4

1 year ago

1.51.0

1 year ago

1.51.2

1 year ago

1.51.1

1 year ago

1.51.3

1 year ago

1.50.9

1 year ago

1.50.8

1 year ago

1.50.7

1 year ago

1.50.6

1 year ago

1.50.5

1 year ago

1.50.4

1 year ago

1.50.3

1 year ago

1.50.2

1 year ago

1.50.1

1 year ago

1.50.0

1 year ago

1.49.9

1 year ago

1.49.5

1 year ago

1.49.7

1 year ago

1.49.6

1 year ago

1.49.8

1 year ago

1.49.4

1 year ago

1.49.3

1 year 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