Cet article vous apporte des connaissances pertinentes sur la façon d'utiliser JavaScript pour implémenter des listes chaînées dans l'apprentissage de la structure de données. J'espère qu'il vous sera utile.
La liste chaînée a les caractéristiques suivantes :
peut étendre dynamiquement l'espace (en js, il en va de même pour les tableaux, mais dans certains langages, la longueur du tableau est fixe et ne peut pas être ajouté dynamiquement, comme le langage C )
Besoin d'un nœud principal
Besoin de connaître l'adresse du nœud suivant
Vous pouvez considérer chaque nœud de la liste chaînée comme un objet. Cet objet a deux attributs, l'un est la valeur du nœud et l'autre est l'adresse du nœud suivant du nœud (s'il s'agit d'une liste doublement chaînée, l'attribut de l'adresse du nœud précédent doit également être ajouté)
//在尾节点处添加节点 function append(element){ let node = new node(element); let current; if(head == null){ current = node }else{ while(current.next){ current = current.next; } current.next = node } length++; }
Analyse du code :
Analyse :
Attribuez l'attribut suivant du nœud précédent à cette position à ce nœud, enregistrez son nœud suivant d'origine et attribuez-le à l'attribut suivant du nœud actuel
function insert(position,element){ let node = new Node(element); let current = head; let previous;//当前节点的前一个节点,在position处添加节点,就是在previos和current之间添加 if(position = 0){ node.next = head; head = node; }else{ for(let i = 0;i< position;i++){ pervious = current; current = current.next; } pervious.next = node; node.next = current; } length++; return true; }
Analyse du code :
Analyse : L'opération de suppression d'un nœud consiste à supprimer le nœud devant le nœud cible Le pointeur pointe vers le nœud après le nœud cible
function removed(element){ let node = new Node(element); let pervious; let nextNode; let current = head; if(head != null){ while (current != node){ pervious = current; current = current.next; nextNode = current.next; } pervious.next = nextNode; length--; return true; }else{ return false; } }
function removedAt(position){ let current = head; let pervious; let nextNode; let i = 0; while(i < position){ pervious = current; current = current.next; nextNode = current.next; } pervious.next = nextNode; length--; return true; }
Analyse : l'interrogation de nœuds est similaire à la suppression de nœuds, à la fois par traversée, recherchez le nœud correspondant ou la position correspondante, puis effectuez l'opération
function searchElement(element){ //输入元素,找到该元素后返回该元素的位置 if(head != null){ let node = new Node(element); let current; let index = 0; if(head == node){ return 0; }else{ current = head; while(current != node){ current = current.next; index++; } return index; } }else{ return -1; } }
function searchPosition(position){ let i = 0; let current = head; while(i< position){ current = current.next; i++; } return current; }
À propos de la liste chaînée Il existe de nombreuses autres opérations. Les listes chaînées plus complexes incluent des listes doublement chaînées (ajout d'un nœud précédent lors de l'initialisation du nœud) et des listes chaînées circulaires ( le nœud suivant du nœud de queue est le nœud de tête). Ces opérations de liste chaînée peuvent également être implémentées en utilisant js , pas grand chose à dire ici. Pour résumer, le cœur de la liste chaînée est que le nœud dans la liste chaînée peut être considéré comme un objet avec deux valeurs d'attribut, l'une est la valeur du nœud et l'autre est le pointeur. L'ajout et la suppression de la liste chaînée signifient un changement. le pointeur pointant vers la liste chaînée, le point clé est current = current.next
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!