data-structure-typed 1.32.9 → 1.33.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/.eslintrc.json +58 -0
  2. package/.idea/codeStyles/Project.xml +61 -0
  3. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  4. package/.prettierrc +16 -0
  5. package/.travis.yml +17 -0
  6. package/CHANGELOG.md +1 -1
  7. package/README.md +197 -257
  8. package/coverage/coverage-final.json +63 -63
  9. package/coverage/coverage-summary.json +16 -16
  10. package/dist/data-structures/binary-tree/abstract-binary-tree.js +1 -16
  11. package/dist/data-structures/binary-tree/abstract-binary-tree.js.map +1 -1
  12. package/dist/data-structures/binary-tree/avl-tree.js +2 -2
  13. package/dist/data-structures/binary-tree/avl-tree.js.map +1 -1
  14. package/dist/data-structures/binary-tree/rb-tree.js +3 -4
  15. package/dist/data-structures/binary-tree/rb-tree.js.map +1 -1
  16. package/dist/data-structures/graph/directed-graph.js.map +1 -1
  17. package/dist/data-structures/graph/undirected-graph.js.map +1 -1
  18. package/dist/data-structures/hash/hash-table.js +107 -2
  19. package/dist/data-structures/hash/hash-table.js.map +1 -1
  20. package/dist/data-structures/heap/max-heap.js.map +1 -1
  21. package/dist/data-structures/heap/min-heap.js.map +1 -1
  22. package/dist/data-structures/linked-list/doubly-linked-list.js +30 -0
  23. package/dist/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  24. package/dist/data-structures/matrix/matrix2d.js +5 -8
  25. package/dist/data-structures/matrix/matrix2d.js.map +1 -1
  26. package/dist/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  27. package/dist/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  28. package/dist/data-structures/queue/deque.js.map +1 -1
  29. package/docs/index.html +197 -256
  30. package/docs/modules.html +2 -0
  31. package/lib/data-structures/binary-tree/abstract-binary-tree.d.ts +8 -18
  32. package/lib/data-structures/binary-tree/abstract-binary-tree.js +5 -23
  33. package/lib/data-structures/binary-tree/avl-tree.d.ts +7 -10
  34. package/lib/data-structures/binary-tree/avl-tree.js +6 -9
  35. package/lib/data-structures/binary-tree/binary-tree.d.ts +2 -2
  36. package/lib/data-structures/binary-tree/bst.d.ts +2 -2
  37. package/lib/data-structures/binary-tree/rb-tree.d.ts +3 -3
  38. package/lib/data-structures/binary-tree/rb-tree.js +3 -3
  39. package/lib/data-structures/binary-tree/tree-multiset.d.ts +3 -3
  40. package/lib/data-structures/binary-tree/tree-multiset.js +1 -1
  41. package/lib/data-structures/graph/abstract-graph.d.ts +10 -10
  42. package/lib/data-structures/graph/abstract-graph.js +2 -2
  43. package/lib/data-structures/graph/directed-graph.d.ts +6 -6
  44. package/lib/data-structures/graph/directed-graph.js +2 -2
  45. package/lib/data-structures/graph/map-graph.d.ts +6 -6
  46. package/lib/data-structures/graph/map-graph.js +2 -2
  47. package/lib/data-structures/graph/undirected-graph.d.ts +6 -6
  48. package/lib/data-structures/graph/undirected-graph.js +2 -2
  49. package/lib/data-structures/hash/hash-table.d.ts +61 -1
  50. package/lib/data-structures/hash/hash-table.js +136 -0
  51. package/lib/data-structures/heap/heap.d.ts +31 -31
  52. package/lib/data-structures/heap/heap.js +11 -11
  53. package/lib/data-structures/heap/max-heap.d.ts +4 -4
  54. package/lib/data-structures/heap/max-heap.js +1 -1
  55. package/lib/data-structures/heap/min-heap.d.ts +4 -4
  56. package/lib/data-structures/heap/min-heap.js +1 -1
  57. package/lib/data-structures/linked-list/doubly-linked-list.d.ts +93 -54
  58. package/lib/data-structures/linked-list/doubly-linked-list.js +79 -22
  59. package/lib/data-structures/linked-list/singly-linked-list.d.ts +46 -46
  60. package/lib/data-structures/linked-list/singly-linked-list.js +20 -20
  61. package/lib/data-structures/matrix/matrix.d.ts +3 -3
  62. package/lib/data-structures/matrix/matrix2d.d.ts +1 -1
  63. package/lib/data-structures/matrix/matrix2d.js +3 -2
  64. package/lib/data-structures/priority-queue/max-priority-queue.d.ts +4 -4
  65. package/lib/data-structures/priority-queue/min-priority-queue.d.ts +4 -4
  66. package/lib/data-structures/priority-queue/priority-queue.d.ts +26 -26
  67. package/lib/data-structures/priority-queue/priority-queue.js +8 -8
  68. package/lib/data-structures/queue/deque.d.ts +30 -30
  69. package/lib/data-structures/queue/deque.js +7 -7
  70. package/lib/data-structures/queue/queue.d.ts +27 -27
  71. package/lib/data-structures/queue/queue.js +8 -8
  72. package/lib/data-structures/stack/stack.d.ts +15 -15
  73. package/lib/data-structures/stack/stack.js +6 -6
  74. package/lib/data-structures/tree/tree.d.ts +7 -7
  75. package/lib/interfaces/abstract-binary-tree.d.ts +0 -1
  76. package/lib/interfaces/avl-tree.d.ts +1 -1
  77. package/lib/types/data-structures/navigator.d.ts +1 -1
  78. package/package.json +5 -7
  79. package/test/integration/index.html +6 -6
  80. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +146 -0
  81. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +44 -0
  82. package/test/unit/data-structures/hash/coordinate-map.test.ts +54 -0
  83. package/test/unit/data-structures/hash/coordinate-set.test.ts +41 -0
  84. package/test/unit/data-structures/hash/hash-table.test.ts +97 -0
  85. package/test/unit/data-structures/linked-list/linked-list.test.ts +1 -3
  86. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +53 -0
  87. package/test/unit/data-structures/matrix/matrix.test.ts +54 -0
  88. package/test/unit/data-structures/matrix/matrix2d.test.ts +138 -0
  89. package/test/unit/data-structures/matrix/navigator.test.ts +80 -0
  90. package/test/unit/data-structures/queue/deque.test.ts +131 -0
  91. package/test/unit/data-structures/queue/queue.test.ts +168 -1
  92. package/test/unit/data-structures/stack/stack.test.ts +67 -0
  93. package/test/unit/data-structures/tree/tree.test.ts +39 -0
  94. package/test/unit/data-structures/trie/trie.test.ts +95 -0
  95. package/umd/bundle.min.js +1 -1
  96. package/umd/bundle.min.js.map +1 -1
  97. package/.eslintrc.js +0 -61
  98. package/.prettierrc.js +0 -16
  99. /package/{CODE-OF-CONDUCT.md → CODE_OF_CONDUCT.md} +0 -0
package/.eslintrc.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "extends": [
3
+ "plugin:@typescript-eslint/recommended",
4
+ "prettier"
5
+ ],
6
+ "rules": {
7
+ "import/no-anonymous-default-export": "off",
8
+ "@typescript-eslint/no-unused-vars": "error",
9
+ "@typescript-eslint/ban-ts-comment": "off",
10
+ "@typescript-eslint/no-explicit-any": "off",
11
+ "@typescript-eslint/no-non-null-assertion": "off",
12
+ "lines-around-comment": [
13
+ "error",
14
+ {
15
+ "beforeLineComment": false,
16
+ "beforeBlockComment": true,
17
+ "allowBlockStart": true,
18
+ "allowClassStart": true,
19
+ "allowObjectStart": true,
20
+ "allowArrayStart": true
21
+ }
22
+ ],
23
+ "newline-before-return": "off",
24
+ "import/newline-after-import": [
25
+ "error",
26
+ {
27
+ "count": 1
28
+ }
29
+ ],
30
+ "@typescript-eslint/ban-types": [
31
+ "error",
32
+ {
33
+ "extendDefaults": true,
34
+ "types": {
35
+ "{}": false
36
+ }
37
+ }
38
+ ]
39
+ },
40
+ "plugins": [
41
+ "import"
42
+ ],
43
+ "settings": {
44
+ "import/parsers": {
45
+ "@typescript-eslint/parser": [
46
+ ".ts"
47
+ ]
48
+ },
49
+ "import/resolver": {
50
+ "typescript": {
51
+ "alwaysTryTypes": true,
52
+ "project": [
53
+ "./tsconfig.json"
54
+ ]
55
+ }
56
+ }
57
+ }
58
+ }
@@ -0,0 +1,61 @@
1
+ <component name="ProjectCodeStyleConfiguration">
2
+ <code_scheme name="Project" version="173">
3
+ <HTMLCodeStyleSettings>
4
+ <option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
5
+ <option name="HTML_QUOTE_STYLE" value="Single" />
6
+ <option name="HTML_ENFORCE_QUOTES" value="true" />
7
+ </HTMLCodeStyleSettings>
8
+ <JSCodeStyleSettings version="0">
9
+ <option name="FORCE_SEMICOLON_STYLE" value="true" />
10
+ <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
11
+ <option name="USE_DOUBLE_QUOTES" value="false" />
12
+ <option name="FORCE_QUOTE_STYlE" value="true" />
13
+ <option name="ENFORCE_TRAILING_COMMA" value="Remove" />
14
+ <option name="SPACES_WITHIN_OBJECT_TYPE_BRACES" value="false" />
15
+ </JSCodeStyleSettings>
16
+ <TypeScriptCodeStyleSettings version="0">
17
+ <option name="FORCE_SEMICOLON_STYLE" value="true" />
18
+ <option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
19
+ <option name="USE_DOUBLE_QUOTES" value="false" />
20
+ <option name="FORCE_QUOTE_STYlE" value="true" />
21
+ <option name="ENFORCE_TRAILING_COMMA" value="Remove" />
22
+ <option name="SPACES_WITHIN_OBJECT_TYPE_BRACES" value="false" />
23
+ </TypeScriptCodeStyleSettings>
24
+ <VueCodeStyleSettings>
25
+ <option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
26
+ <option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
27
+ </VueCodeStyleSettings>
28
+ <codeStyleSettings language="HTML">
29
+ <option name="SOFT_MARGINS" value="120" />
30
+ <indentOptions>
31
+ <option name="INDENT_SIZE" value="2" />
32
+ <option name="CONTINUATION_INDENT_SIZE" value="2" />
33
+ <option name="TAB_SIZE" value="2" />
34
+ </indentOptions>
35
+ </codeStyleSettings>
36
+ <codeStyleSettings language="JavaScript">
37
+ <option name="RIGHT_MARGIN" value="120" />
38
+ <option name="SOFT_MARGINS" value="120" />
39
+ <indentOptions>
40
+ <option name="INDENT_SIZE" value="2" />
41
+ <option name="CONTINUATION_INDENT_SIZE" value="2" />
42
+ <option name="TAB_SIZE" value="2" />
43
+ </indentOptions>
44
+ </codeStyleSettings>
45
+ <codeStyleSettings language="TypeScript">
46
+ <option name="RIGHT_MARGIN" value="120" />
47
+ <option name="SOFT_MARGINS" value="120" />
48
+ <indentOptions>
49
+ <option name="INDENT_SIZE" value="2" />
50
+ <option name="CONTINUATION_INDENT_SIZE" value="2" />
51
+ <option name="TAB_SIZE" value="2" />
52
+ </indentOptions>
53
+ </codeStyleSettings>
54
+ <codeStyleSettings language="Vue">
55
+ <option name="SOFT_MARGINS" value="120" />
56
+ <indentOptions>
57
+ <option name="CONTINUATION_INDENT_SIZE" value="2" />
58
+ </indentOptions>
59
+ </codeStyleSettings>
60
+ </code_scheme>
61
+ </component>
@@ -0,0 +1,5 @@
1
+ <component name="ProjectCodeStyleConfiguration">
2
+ <state>
3
+ <option name="USE_PER_PROJECT_SETTINGS" value="true" />
4
+ </state>
5
+ </component>
package/.prettierrc ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "arrowParens": "avoid",
3
+ "bracketSpacing": false,
4
+ "htmlWhitespaceSensitivity": "css",
5
+ "insertPragma": false,
6
+ "bracketSameLine": false,
7
+ "jsxSingleQuote": true,
8
+ "printWidth": 120,
9
+ "proseWrap": "preserve",
10
+ "quoteProps": "as-needed",
11
+ "requirePragma": false,
12
+ "singleQuote": true,
13
+ "tabWidth": 2,
14
+ "trailingComma": "none",
15
+ "useTabs": false
16
+ }
package/.travis.yml ADDED
@@ -0,0 +1,17 @@
1
+ language: node_js
2
+ node_js:
3
+ - "19"
4
+ install:
5
+ - npm build
6
+ script:
7
+ - npm run lint
8
+ - npm run test
9
+ deploy:
10
+ provider: npm
11
+ email: zrwusa@gmail.com
12
+ api_key:
13
+ secure: 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
14
+ skip_cleanup: true
15
+ on:
16
+ tags: true
17
+ repo: zrwusa/data-structure-typed
package/CHANGELOG.md CHANGED
@@ -8,7 +8,7 @@ All notable changes to this project will be documented in this file.
8
8
  - [Semantic Versioning](https://semver.org/spec/v2.0.0.html)
9
9
  - [`auto-changelog`](https://github.com/CookPete/auto-changelog)
10
10
 
11
- ## [v1.32.9](https://github.com/zrwusa/data-structure-typed/compare/v1.12.9...main) (upcoming)
11
+ ## [v1.33.2](https://github.com/zrwusa/data-structure-typed/compare/v1.12.9...main) (upcoming)
12
12
 
13
13
  ## [v1.12.9](https://github.com/zrwusa/data-structure-typed/compare/v1.12.8...v1.12.9) (14 August 2023)
14
14
 
package/README.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Data Structure Typed
2
2
 
3
+ Data Structures of Javascript & TypeScript.
4
+
5
+ A library that provides a variety of JavaScript and TypeScript data structures, as well as implementations of some
6
+ classic algorithms.
7
+
8
+ Do you envy languages like C++ with *std*, Python with *collections*, and Java with *java.util*? Well, no need to envy anymore! JavaScript and TypeScript now have *data-structure-typed*
9
+
3
10
  ![License](https://img.shields.io/badge/License-MIT-blue.svg)
4
11
  ![Language](https://img.shields.io/github/languages/top/zrwusa/data-structure-typed)
5
12
  ![GitHub release (latest by date)](https://img.shields.io/github/v/release/zrwusa/data-structure-typed)
@@ -7,10 +14,6 @@
7
14
  ![npm](https://aleen42.github.io/badges/src/npm.svg)
8
15
  ![eslint](https://aleen42.github.io/badges/src/eslint.svg)
9
16
 
10
- ## Brief
11
-
12
- Data Structures of Javascript & TypeScript.
13
-
14
17
  ## Built-in classic algorithms
15
18
 
16
19
  DFS(Depth-First Search), DFSIterative, BFS(Breadth-First Search), morris, Bellman-Ford Algorithm, Dijkstra's Algorithm,
@@ -21,7 +24,7 @@ Floyd-Warshall Algorithm, Tarjan's Algorithm.
21
24
  ### npm
22
25
 
23
26
  ```bash
24
- npm install data-structure-typed --save
27
+ npm i data-structure-typed --save
25
28
  ```
26
29
 
27
30
  ### yarn
@@ -34,7 +37,7 @@ yarn add data-structure-typed
34
37
 
35
38
  ```html
36
39
 
37
- <script src="https://cdn.jsdelivr.net/npm/data-structure-typed/umd/bundle.min.js"></script>
40
+ <script src='https://cdn.jsdelivr.net/npm/data-structure-typed/umd/bundle.min.js'></script>
38
41
  ```
39
42
 
40
43
  ```js
@@ -96,7 +99,7 @@ bst.get(6); // null
96
99
  bst.isAVLBalanced(); // true
97
100
  bst.BFS()[0] === 11; // true
98
101
 
99
- const objBST = new BST<BSTNode<{ id: number, keyA: number }>>();
102
+ const objBST = new BST<BSTNode<{id: number, keyA: number}>>();
100
103
  objBST.add(11, {id: 11, keyA: 11});
101
104
  objBST.add(3, {id: 3, keyA: 3});
102
105
 
@@ -407,6 +410,193 @@ Array.from(dijkstraResult?.seen ?? []).map(vertex => vertex.id) // ['A', 'B', 'D
407
410
  </tbody>
408
411
  </table>
409
412
 
413
+
414
+
415
+ ### Standard library data structure comparison
416
+
417
+ <table>
418
+ <thead>
419
+ <tr>
420
+ <th>Data Structure</th>
421
+ <th>C++ std</th>
422
+ <th>Data Structure Typed</th>
423
+ <th>java.util</th>
424
+ <th>Python collections</th>
425
+ </tr>
426
+ </thead>
427
+ <tbody>
428
+ <tr>
429
+ <td>Dynamic Array</td>
430
+ <td>std::vector&lt;T&gt;</td>
431
+ <td>Array&lt;E&gt;</td>
432
+ <td>ArrayList&lt;E&gt;</td>
433
+ <td>list</td>
434
+ </tr>
435
+ <tr>
436
+ <td>Linked List</td>
437
+ <td>std::list&lt;T&gt;</td>
438
+ <td>DoublyLinkedList&lt;E&gt;</td>
439
+ <td>LinkedList&lt;E&gt;</td>
440
+ <td>deque</td>
441
+ </tr>
442
+ <tr>
443
+ <td>Set</td>
444
+ <td>std::set&lt;T&gt;</td>
445
+ <td>Set</td>
446
+ <td>HashSet&lt;E&gt;</td>
447
+ <td>set</td>
448
+ </tr>
449
+ <tr>
450
+ <td>Map</td>
451
+ <td>std::map&lt;K, V&gt;</td>
452
+ <td>Map</td>
453
+ <td>HashMap&lt;K, V&gt;</td>
454
+ <td>dict</td>
455
+ </tr>
456
+ <tr>
457
+ <td>Unordered Map</td>
458
+ <td>std::unordered_map&lt;K, V&gt;</td>
459
+ <td>N/A</td>
460
+ <td>HashMap&lt;K, V&gt;</td>
461
+ <td>defaultdict</td>
462
+ </tr>
463
+ <tr>
464
+ <td>Unordered Set</td>
465
+ <td>std::unordered_set&lt;T&gt;</td>
466
+ <td>N/A</td>
467
+ <td>HashSet&lt;E&gt;</td>
468
+ <td>N/A</td>
469
+ </tr>
470
+ <tr>
471
+ <td>Queue</td>
472
+ <td>std::queue&lt;T&gt;</td>
473
+ <td>Queue</td>
474
+ <td>Queue&lt;E&gt;</td>
475
+ <td>N/A</td>
476
+ </tr>
477
+ <tr>
478
+ <td>Priority Queue</td>
479
+ <td>std::priority_queue&lt;T&gt;</td>
480
+ <td>PriorityQueue</td>
481
+ <td>PriorityQueue&lt;E&gt;</td>
482
+ <td>N/A</td>
483
+ </tr>
484
+ <tr>
485
+ <td>Stack</td>
486
+ <td>std::stack&lt;T&gt;</td>
487
+ <td>Stack</td>
488
+ <td>Stack&lt;E&gt;</td>
489
+ <td>N/A</td>
490
+ </tr>
491
+ <tr>
492
+ <td>Bitset</td>
493
+ <td>std::bitset&lt;N&gt;</td>
494
+ <td>N/A</td>
495
+ <td>N/A</td>
496
+ <td>N/A</td>
497
+ </tr>
498
+ <tr>
499
+ <td>Deque</td>
500
+ <td>std::deque&lt;T&gt;</td>
501
+ <td>Deque</td>
502
+ <td>N/A</td>
503
+ <td>N/A</td>
504
+ </tr>
505
+ <tr>
506
+ <td>Multiset</td>
507
+ <td>std::multiset&lt;T&gt;</td>
508
+ <td>N/A</td>
509
+ <td>N/A</td>
510
+ <td>N/A</td>
511
+ </tr>
512
+ <tr>
513
+ <td>Multimap</td>
514
+ <td>std::multimap&lt;K, V&gt;</td>
515
+ <td>N/A</td>
516
+ <td>N/A</td>
517
+ <td>N/A</td>
518
+ </tr>
519
+ <tr>
520
+ <td>Unordered Multiset</td>
521
+ <td>std::unordered_multiset</td>
522
+ <td>N/A</td>
523
+ <td>Counter</td>
524
+ <td>N/A</td>
525
+ </tr>
526
+ <tr>
527
+ <td>Ordered Dictionary</td>
528
+ <td>N/A</td>
529
+ <td>Map</td>
530
+ <td>N/A</td>
531
+ <td>OrderedDict</td>
532
+ </tr>
533
+ <tr>
534
+ <td>Double-Ended Queue (Deque)</td>
535
+ <td>std::deque&lt;T&gt;</td>
536
+ <td>Deque</td>
537
+ <td>N/A</td>
538
+ <td>N/A</td>
539
+ </tr>
540
+ <tr>
541
+ <td>Linked Hash Set</td>
542
+ <td>N/A</td>
543
+ <td>N/A</td>
544
+ <td>LinkedHashSet&lt;E&gt;</td>
545
+ <td>N/A</td>
546
+ </tr>
547
+ <tr>
548
+ <td>Linked Hash Map</td>
549
+ <td>N/A</td>
550
+ <td>N/A</td>
551
+ <td>LinkedHashMap&lt;K, V&gt;</td>
552
+ <td>N/A</td>
553
+ </tr>
554
+ <tr>
555
+ <td>Sorted Set</td>
556
+ <td>N/A</td>
557
+ <td>AVLTree, RBTree</td>
558
+ <td>TreeSet&lt;E&gt;</td>
559
+ <td>N/A</td>
560
+ </tr>
561
+ <tr>
562
+ <td>Sorted Map</td>
563
+ <td>N/A</td>
564
+ <td>AVLTree, RBTree</td>
565
+ <td>TreeMap&lt;K, V&gt;</td>
566
+ <td>N/A</td>
567
+ </tr>
568
+ <tr>
569
+ <td>Tree Set</td>
570
+ <td>std::set</td>
571
+ <td>AVLTree, RBTree</td>
572
+ <td>TreeSet&lt;E&gt;</td>
573
+ <td>N/A</td>
574
+ </tr>
575
+ <tr>
576
+ <td>Persistent Collections</td>
577
+ <td>N/A</td>
578
+ <td>N/A</td>
579
+ <td>N/A</td>
580
+ <td>N/A</td>
581
+ </tr>
582
+ <tr>
583
+ <td>unordered multiset</td>
584
+ <td>unordered multiset&lt;T&gt;</td>
585
+ <td>N/A</td>
586
+ <td>N/A</td>
587
+ <td>N/A</td>
588
+ </tr>
589
+ <tr>
590
+ <td>Unordered Multimap</td>
591
+ <td>std::unordered_multimap&lt;K, V&gt;</td>
592
+ <td>N/A</td>
593
+ <td>N/A</td>
594
+ <td>N/A</td>
595
+ </tr>
596
+ </tbody>
597
+ </table>
598
+
599
+
410
600
  ## Code design
411
601
 
412
602
  By strictly adhering to object-oriented design (BinaryTree -> BST -> AVLTree -> TreeMultiset), you can seamlessly
@@ -675,253 +865,3 @@ optimal approach to data structure design.
675
865
  </tr>
676
866
  </tbody>
677
867
  </table>
678
-
679
-
680
- <table>
681
- <tr>
682
- <th>Data Structure</th>
683
- <th>C++ STL</th>
684
- <th>java.util</th>
685
- <th>Python collections</th>
686
- </tr>
687
- <tr>
688
- <td>Dynamic Array (ArrayList)</td>
689
- <td>std::vector&lt;T&gt;</td>
690
- <td>ArrayList&lt;E&gt;</td>
691
- <td>list</td>
692
- </tr>
693
- <tr>
694
- <td>Linked List</td>
695
- <td>std::list&lt;T&gt;</td>
696
- <td>LinkedList&lt;E&gt;</td>
697
- <td>deque</td>
698
- </tr>
699
- <tr>
700
- <td>Set</td>
701
- <td>std::set&lt;T&gt;</td>
702
- <td>HashSet&lt;E&gt;</td>
703
- <td>set</td>
704
- </tr>
705
- <tr>
706
- <td>Map</td>
707
- <td>std::map&lt;K, V&gt;</td>
708
- <td>HashMap&lt;K, V&gt;</td>
709
- <td>dict</td>
710
- </tr>
711
- <tr>
712
- <td>Stack</td>
713
- <td>std::stack&lt;T&gt;</td>
714
- <td>Stack&lt;E&gt;</td>
715
- <td>N/A</td>
716
- </tr>
717
- <tr>
718
- <td>Queue</td>
719
- <td>std::queue&lt;T&gt;</td>
720
- <td>LinkedList&lt;E&gt;</td>
721
- <td>N/A</td>
722
- </tr>
723
- <tr>
724
- <td>Priority Queue</td>
725
- <td>std::priority_queue&lt;T&gt;</td>
726
- <td>PriorityQueue&lt;E&gt;</td>
727
- <td>N/A</td>
728
- </tr>
729
- <tr>
730
- <td>Hash Table</td>
731
- <td>N/A</td>
732
- <td>N/A</td>
733
- <td>defaultdict, Counter, etc.</td>
734
- </tr>
735
- <tr>
736
- <td>Deque</td>
737
- <td>std::deque&lt;T&gt;</td>
738
- <td>N/A</td>
739
- <td>N/A</td>
740
- </tr>
741
- <tr>
742
- <td>Multiset</td>
743
- <td>std::multiset&lt;T&gt;</td>
744
- <td>N/A</td>
745
- <td>N/A</td>
746
- </tr>
747
- <tr>
748
- <td>Multimap</td>
749
- <td>std::multimap&lt;K, V&gt;</td>
750
- <td>N/A</td>
751
- <td>N/A</td>
752
- </tr>
753
- <tr>
754
- <td>Unordered Set</td>
755
- <td>std::unordered_set&lt;T&gt;</td>
756
- <td>HashSet&lt;E&gt;</td>
757
- <td>N/A</td>
758
- </tr>
759
- <tr>
760
- <td>Unordered Map</td>
761
- <td>std::unordered_map&lt;K, V&gt;</td>
762
- <td>HashMap&lt;K, V&gt;</td>
763
- <td>N/A</td>
764
- </tr>
765
- <tr>
766
- <td>Bitset</td>
767
- <td>std::bitset&lt;N&gt;</td>
768
- <td>N/A</td>
769
- <td>N/A</td>
770
- </tr>
771
- <tr>
772
- <td>Ordered Dictionary (OrderedDict)</td>
773
- <td>N/A</td>
774
- <td>N/A</td>
775
- <td>OrderedDict</td>
776
- </tr>
777
- <tr>
778
- <td>User-Defined Dictionary</td>
779
- <td>N/A</td>
780
- <td>N/A</td>
781
- <td>UserDict</td>
782
- </tr>
783
- <tr>
784
- <td>User-Defined List</td>
785
- <td>N/A</td>
786
- <td>N/A</td>
787
- <td>UserList</td>
788
- </tr>
789
- <tr>
790
- <td>User-Defined Set</td>
791
- <td>N/A</td>
792
- <td>N/A</td>
793
- <td>UserSet</td>
794
- </tr>
795
- <tr>
796
- <td>Double-Ended Queue (Deque)</td>
797
- <td>std::deque&lt;T&gt;</td>
798
- <td>N/A</td>
799
- <td>N/A</td>
800
- </tr>
801
- <tr>
802
- <td>Skip List</td>
803
- <td>N/A</td>
804
- <td>N/A</td>
805
- <td>N/A</td>
806
- </tr>
807
- <tr>
808
- <td>Circular Queue</td>
809
- <td>N/A</td>
810
- <td>N/A</td>
811
- <td>N/A</td>
812
- </tr>
813
- <tr>
814
- <td>Bit Array</td>
815
- <td>N/A</td>
816
- <td>N/A</td>
817
- <td>N/A</td>
818
- </tr>
819
- <tr>
820
- <td>Bloom Filter</td>
821
- <td>N/A</td>
822
- <td>N/A</td>
823
- <td>N/A</td>
824
- </tr>
825
- <tr>
826
- <td>Linked Hash Set</td>
827
- <td>N/A</td>
828
- <td>LinkedHashSet&lt;E&gt;</td>
829
- <td>N/A</td>
830
- </tr>
831
- <tr>
832
- <td>Linked Hash Map</td>
833
- <td>N/A</td>
834
- <td>LinkedHashMap&lt;K, V&gt;</td>
835
- <td>N/A</td>
836
- </tr>
837
- <tr>
838
- <td>Sorted Set</td>
839
- <td>N/A</td>
840
- <td>TreeSet&lt;E&gt;</td>
841
- <td>N/A</td>
842
- </tr>
843
- <tr>
844
- <td>Sorted Map</td>
845
- <td>N/A</td>
846
- <td>TreeMap&lt;K, V&gt;</td>
847
- <td>N/A</td>
848
- </tr>
849
- <tr>
850
- <td>Tree Set</td>
851
- <td>N/A</td>
852
- <td>N/A</td>
853
- <td>N/A</td>
854
- </tr>
855
- <tr>
856
- <td>Tree Map</td>
857
- <td>N/A</td>
858
- <td>N/A</td>
859
- <td>N/A</td>
860
- </tr>
861
- <tr>
862
- <td>Persistent Collections</td>
863
- <td>N/A</td>
864
- <td>N/A</td>
865
- <td>N/A</td>
866
- </tr>
867
- <tr>
868
- <td>std::unordered_multiset</td>
869
- <td>std::unordered_multiset&lt;T&gt;</td>
870
- <td>N/A</td>
871
- <td>N/A</td>
872
- </tr>
873
- <tr>
874
- <td>std::unordered_multimap</td>
875
- <td>std::unordered_multimap&lt;K, V&gt;</td>
876
- <td>N/A</td>
877
- <td>N/A</td>
878
- </tr>
879
- <tr>
880
- <td>N/A</td>
881
- <td>TreeSet&lt;E&gt;</td>
882
- <td>TreeSet&lt;E&gt;</td>
883
- <td>N/A</td>
884
- </tr>
885
- <tr>
886
- <td>N/A</td>
887
- <td>TreeMap&lt;K, V&gt;</td>
888
- <td>TreeMap&lt;K, V&gt;</td>
889
- <td>N/A</td>
890
- </tr>
891
- <tr>
892
- <td>N/A</td>
893
- <td>LinkedBlockingQueue&lt;E&gt;</td>
894
- <td>N/A</td>
895
- <td>N/A</td>
896
- </tr>
897
- <tr>
898
- <td>N/A</td>
899
- <td>ConcurrentHashMap&lt;K, V&gt;</td>
900
- <td>N/A</td>
901
- <td>N/A</td>
902
- </tr>
903
- <tr>
904
- <td>N/A</td>
905
- <td>N/A</td>
906
- <td>namedtuple</td>
907
- <td>N/A</td>
908
- </tr>
909
- <tr>
910
- <td>N/A</td>
911
- <td>N/A</td>
912
- <td>ChainMap</td>
913
- <td>N/A</td>
914
- </tr>
915
- <tr>
916
- <td>N/A</td>
917
- <td>N/A</td>
918
- <td>defaultdict</td>
919
- <td>N/A</td>
920
- </tr>
921
- <tr>
922
- <td>N/A</td>
923
- <td>N/A</td>
924
- <td>Counter</td>
925
- <td>N/A</td>
926
- </tr>
927
- </table>