Définir “cyclique de structures de données”
À la JSON site il dit
JSON ne prend pas en charge cyclique de données
structures, donc soyez prudent de ne pas donner
cyclique des structures pour le JSON
stringifier.
Que faut-il dire par là? Quelqu'un peut-il me donner un exemple d'une telle structure de données en Javascript?
Vous devez vous connecter pour publier un commentaire.
Maintenant, vous pouvez le faire, par exemple:
Si vous imaginez que les membres de la structure de données définie comme un graphe cyclique structure de données est l'endroit où un membre se réfère à un autre, ou même de la structure.
Par exemple:
Il est impossible de le représenter en JSON, vous devez vous référer à l'extérieur
{}
partie en quelque sorte:L'objet contient un cycle, c'est à dire, il se réfère à lui-même ou, plus généralement, d'un objet auquel il se réfère, soit directement ou par l'intermédiaire d'une propriété est l'objet d'origine.
ou, plus probablement,
Cyclique structure de données est une structure qui contient une référence à lui-même (directement ou indirectement).
Voir aussi http://en.wikipedia.org/wiki/Circular_reference
Voici un exemple d'une telle structure:
Si vous essayez d'imprimer sa représentation sous forme de chaîne de manière récursive, vous allez vous retrouver avec un débordement de pile, parce que pour imprimer une valeur de
c
vous devez imprimer la valeur dec
.Une structure de données cyclique graphique: http://en.wikipedia.org/wiki/Cycle_graph
Je suppose que l'exemple classique d'une structure cyclique est le liste à double liaison. Chaque élément de points à la précédente et la suivante éléments dans la liste. Cela signifie que chaque élément forme un cycle avec le précédent et suivant de l'élément.
(Ici, chacun A, B, C bien écrit deux fois, c'est un objet).
Un des points de B, comme le suivant dans la liste. B points à Un précédent dans la liste. Il y a donc un cycle de A à B et à A. La même chose est vraie pour tout élément dans la liste, avec des éléments pas la tête ou la queue beloning à deux cycles.
Une solution de sérialisation des listes de ce genre est d'utiliser des Identifiants pour représenter chaque objet. Cela supprime les cycles dans la structure. On pourrait alors écrire
CYCLE: UNE situation dans laquelle vous retournez à l'endroit même où vous avez commencé.
CYCLIQUE STRUCTURE de DONNÉES: UNE structure de données dans laquelle une telle situation pourrait se produire. Par exemple graphique,liste chaînée (individuellement/doublement), file d'attente, etc.
Une liste liée nœud dans le JS est mis en œuvre comme:
Maintenant j'ai créer deux nœuds comme indiqué ci-dessous:
Et le lien entre eux pour former un cycle.
La suite de la traversée de code va entrer dans une boucle infinie qui montre l'existence d'un cycle.
si vous avez:
En JSON pour b, il devrait ressembler à:
En JSON pour le c, il devrait ressembler à:
Pas de pointeurs.