J'aimerais demander la recommandation d'une ou plusieurs bibliothèques JavaScript qui fournissent une implémentation de certaines structures de données de base telles qu'une file d'attente prioritaire, une carte avec des clés arbitraires, des essais, des graphes, etc. ainsi que certains algorithmes qui opèrent sur elles.
Je suis surtout intéressé par :
- L'ensemble des fonctionnalités couvertes,
- Flexibilité de la solution - cela s'applique surtout aux graphiques. Par exemple, suis-je obligé d'utiliser une implémentation de graphe fournie ?
- Utilisation des caractéristiques fonctionnelles de la langue - là encore, cela donne parfois une plus grande flexibilité,
- Performance de la mise en œuvre
Je tiens à préciser que je suis conscient qu'il est possible d'implémenter les structures de données suivantes en utilisant JavaScript :
- Une carte, si les valeurs des clés sont des chaînes de caractères ou des nombres,
- Un ensemble, (en utilisant une implémentation de carte),
- Une file d'attente, bien que, comme cela a été souligné ci-dessous, elle soit inefficace sur certains navigateurs,
Pour le moment, je suis surtout intéressé par les files d'attente prioritaires (à ne pas confondre avec les files d'attente ordinaires), les implémentations de graphes qui ne sont pas très intrusives quant au format du graphe d'entrée. Par exemple, elles pourraient utiliser des callbacks pour parcourir la structure du graphe plutôt que d'accéder à des propriétés concrètes avec des noms fixes.
7 votes
Ce n'est pas vraiment une réponse, alors je vais commenter : Certains de ces éléments font partie du langage. Tous les objets JavaScript sont des cartes avec des clés arbitraires ; et comme les valeurs des propriétés peuvent être des objets, elles forment des graphes. Les "tableaux" JavaScript (qui ne sont pas vraiment des tableaux ) fournissent des fonctionnalités de pile (
push
,pop
).0 votes
@Crowder Oui, je suis d'accord. Mais les touches doivent vraiment être soit numériques, soit des chaînes de caractères, donc je ne dirais pas que c'est arbitraire. Pour le push & pop, bien sûr je peux l'utiliser pour implémenter une file d'attente mais pas beaucoup d'aide pour une file prioritaire. Je demande les structures de données qui manquent à js (il en manque beaucoup).
0 votes
C'est pourquoi il s'agissait d'un commentaire et non d'une réponse :-) (Et oui, les noms de propriétés doivent être des chaînes de caractères. En fait, même les index des tableaux sont des noms de propriétés, et donc des chaînes de caractères, bien que nous utilisions presque toujours des nombres en théorie ils sont convertis en chaînes de caractères et ensuite la propriété est recherchée, bien que l'on espère que les implémentations optimisent cela).