Skip to content

Commit 070e4ec

Browse files
committed
Add tasks
1 parent c06c7eb commit 070e4ec

File tree

1 file changed

+42
-2
lines changed

1 file changed

+42
-2
lines changed

README.md

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,42 @@
1-
# Dequeue
2-
Stack, Queue and Dequeue
1+
# Stack, Queue and Dequeue
2+
3+
Задания (на выбор):
4+
- Реализовать стек, очередь и дэк на прототипах и замыканиях
5+
- Реализовать стек через 2 класса (Stack + Element), то же и с очередью и дэком
6+
- Добавить протокол iterable
7+
- см. про `next()` и [`Symbol.iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols)
8+
- Сделать методы и свойства:
9+
- Клонирование `.clone():list`
10+
- Очистка `.clear()`
11+
- Кол-во элементов `.size`
12+
- Реализовать события (чтоб можно было на них подписываться, но чтоб cнаружи
13+
нельзя было делать`emit`):
14+
- `.on('push', (element, dequeue) => {})`
15+
- `.on('pop', (element, dequeue) => {})`
16+
- `.on('unshift', (element, dequeue) => {})`
17+
- `.on('shift', (element, dequeue) => {})`
18+
- Когда дэк опустошен `.on('drain', (dequeue) => {})`
19+
- Взять односвязный или двусвязный список и унаследовать от него
20+
стек, очередь и дэк
21+
- Взять односвязный или двусвязный список и на базе их построить
22+
стек, очередь и дэк через механизм агрегированяи (делегирования)
23+
- Добавить в очерез таймаут ожидания в очереди `queue.timeout(msec)`
24+
- Добавить в очередь работу с приоритетами (упорядочить очередь по приоритету)
25+
- Реализовать очередь с приоритетами на базе массива и дерева
26+
- Асинхронные аналоги
27+
- `.pop((data) => {})`
28+
- `.shift((data) => {})`
29+
- аналоги на Promise
30+
31+
Построение цепочек из очередей:
32+
```js
33+
const incoming = new Queue();
34+
const calculating = new Queue();
35+
const preparing = new Queue();
36+
37+
incoming.process(item => item).pipe(calculating);
38+
calculating.process(item => item).pipe(preparing);
39+
preparing.process(item => {
40+
console.log(item);
41+
});
42+
```

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy