Maison > Article > interface Web > Existe-t-il une liste chaînée en javascript ?
Il n'y a pas de liste chaînée en JavaScript ; une liste chaînée fait référence à une liste composée de plusieurs éléments. Les éléments ne sont pas stockés en continu mais sont connectés entre eux par des pointeurs suivants. Par conséquent, lors de l'ajout ou de la suppression d'éléments non-head et tail dans le fichier. liste chaînée, vous n'avez pas besoin de déplacer les éléments, il vous suffit de changer le pointeur suivant, l'objet peut être utilisé pour simuler une liste chaînée en JavaScript.
L'environnement d'exploitation de ce tutoriel : système Windows 10, JavaScript version 1.8.5, ordinateur Dell G3.
Il n'y a pas de liste chaînée en javascript
Qu'est-ce qu'une liste chaînée ?
Une liste chaînée est une liste composée de plusieurs éléments
Les éléments sont stockés de manière discontinue et sont connectés entre eux avec les pointeurs suivants
Il n'y a pas de liste chaînée dans JS, mais vous pouvez utiliser Object pour simuler une liste chaînée
Opérations courantes
Nouveau nœud APPEND除 Supprimer le nœud Supprimer
Insérer un nœud Insérer
Récupérer l'index de
la chaîne de la table liée vers la chaîne
Récupérer la taille de la liste chaînée Il est souvent nécessaire de déplacer des éléments lorsqu'ils ne le sont pas le premier et le dernier éléments
Liste chaînée : lors de l'ajout ou de la suppression d'éléments autres que le premier et le dernier, vous n'êtes pas autorisé à déplacer les éléments, il vous suffit de changer la direction du suivant.
L'exemple est le suivant :JavaScript n'a pas d'implémentation directe de liste chaînée
function LinkedList(){ var Node = function(element){ this.element = element; this.next = null; } var head = null; var length = 0; // 定义append方法 this.append = function(element){ var node = new Node(element), current; // 当head为空时,就将新增的node作为head if(head === null){ head = node }else{ // 当head不为空时,将head赋值为当前值,通过判断当前值的next值是否存在遍历整个链表 current = head; while(current.next){ current = current.next; } // 遍历到链表的最后一项时,设置最后一项的next为新增的内容 current.next = node } // 每新增一项,length都加1操作 length++; } // 定义toString方法 this.toString = function(){ var string = '', current = head; // 最初将当前值定位到头部,当current存在时,将current的值添加到需要返回的string中,之后将current取为链表下一个值 while(current){ string += current.element + ( current.next ? ',' : ''); current = current.next } // 遍历完整个链表之后返回string return string; } this.removeAt = function(position){ // 当指定的位置没有在链表的长度范围内时直接返回null if(position > -1 && position < length){ var current = head, index = 0, previous; // 指定为值是第一个时就将head移到下一个位置 if(position === 0){ head = current.next }else{ // 通过遍历的方式将current移动到指定位置,使用index记录移动的距离 while(index < position){ previous = current; current = current.next; index++; } // 删除是通过将指定位置的上一个节点的next指向指定位置的下一个节点 previous.next = current.next } // 一旦删除成功需要将长度减一并返回删除的值 length--; return current.element; } return null; } // 实现插入功能 this.insert = function(position,element){ // 插入的位置不在链表范围内时返回false if(position > -1 && position <= length){ var current = head, index = 0, node = new Node(element), previous; // 插入内容在头部时将插入的node的next指定为current,current此时为head,然后将head指定为插入的node if(position === 0){ node.next = current; head = node; }else{ // 通过遍历的方式将指针指定到插入的位置,index记录当前移动的位置 while(index < position){ previous = current; current = current.next index++ } // 插入元素通过将插入位置的上一个元素的next指向插入的节点,并将插入的节点的next指向当前节点 previous.next = node; node.next = current; } // 插入成功之后length加1 length++; return true; } return false } // 实现查找指定element的index的功能 this.indexOf = function(element){ var index = 0, current = head; // 通过遍历的方式寻找指定元素所在的位置. // 当前节点存在时,判断当前节点的element是否为需要寻找的element,如果是就返回此时的index,如果不是就继续向下遍历节点 // 当存在两个相同内容时只会返回第一个index while(current){ if(current.element === element){ return index; } current = current.next; index++; } return -1; } }Après l'implémentation, effectuez l'appel suivant :
var linkedList = new LinkedList(); linkedList.append(15); linkedList.append(10); linkedList.insert(1,2) // true linkedList.insert(2,2) // true linkedList.toString() // "15,2,2,10" linkedList.removeAt(3) // 10 linkedList.toString() // "15,2,2" linkedList.indexOf(2) // 1[Recommandations associées. :
tutoriel vidéo javascript, front-end web
】
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!