added queue classes

This commit is contained in:
Egge
2023-05-12 23:20:03 +02:00
parent 08885ab8da
commit fa21f71ab5

View File

@@ -109,3 +109,79 @@ export function insertEventIntoAscendingList(
return sortedArray
}
export class MessageNode {
private _value: string;
private _next: MessageNode|null;
public get value(): string {
return this._value;
}
public set value(message: string) {
this._value = message;
}
public get next(): MessageNode|null {
return this._next;
}
public set next(node: MessageNode|null) {
this._next = node;
}
constructor(message: string) {
this._value = message;
this._next = null;
}
}
export class MessageQueue {
private _first: MessageNode|null;
private _last: MessageNode|null;
public get first(): MessageNode|null {
return this._first;
}
public set first(messageNode: MessageNode|null) {
this._first = messageNode;
}
public get last(): MessageNode|null {
return this._last;
}
public set last(messageNode: MessageNode|null) {
this._last = messageNode;
}
private _size: number;
public get size(): number {
return this._size;
}
public set size(v: number) {
this._size = v;
}
constructor() {
this._first = null;
this._last = null;
this._size = 0;
}
enqueue(message: string): boolean {
const newNode = new MessageNode(message);
if (this._size == 0 || !this._last) {
this._first = newNode;
this._last = newNode;
} else {
this._last.next = newNode;
this._last = newNode;
}
this._size++;
return true;
}
dequeue(): string|null {
if (this._size == 0 || !this._first) return null;
let prev = this._first;
this._first = prev.next;
prev.next = null;
this._size--;
return prev.value;
}
}