欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用JavaScript实现链表的数据结构的代码

程序员文章站 2022-11-25 09:10:59
链表(linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(pointer) &...

链表(linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(pointer)   — *

上面是*对 链表 的解读。下面我们用 javascript 代码对链表的数据结构进行实现

实现node类表示节点

/**
 * node 类用来表示节点
 * element 用来保存节点上的数据
 * next 用来保存指向下一个节点的链接
 */
function node(element) {
 this.element = element;
 this.next = null;
}
llist类提供对链表操作的方法
/**
 * llist 类提供了对链表进行操作的方法
 * 链表只有一个属性,
 * 使用一个 node 对象来保存该链表的头节点。
 */
class llist {
 constructor() {
  this.head = new node('head');
 }
 // 查找节点
 find(item) {
  let currnode = this.head;
  while(currnode.element !== item) {
   currnode = currnode.next;
  }
  return currnode;
 }
 // 查找前一个节点
 findpre(item) {
  if(item === 'head') throw new error('now is head!');
  let currnode = this.head;
  while (currnode.next && currnode.next.element !== item) {
   currnode = currnode.next;
  }
  return currnode;
 }
 // 插入新节点
 insert(newelement, item) {
  let newnode = new node(newelement);
  let currnode = this.find(item);
  newnode.next = currnode.next;
  currnode.next = newnode;
 }
 // 删除一个节点
 remove(item) {
  let prenode = this.findpre(item);
  if(prenode.next !== null) {
   prenode.next = prenode.next.next;
  }
 }
 // 显示链表中的元素
 display() {
  let currnode = this.head;
  while(currnode.next !== null) {
   console.log(currnode.next.element);
   currnode = currnode.next;
  }
 }
}

测试代码

const list = new llist(); 
// llist { head: node { element: 'head', next: null } }
list.insert('0', 'head');
list.insert('1', '0');
list.insert('2', '1');
list.insert('3', '2');
list.remove('1');
console.log(list); 
// llist { head: node { element: 'head', next: node { element: '0', next: [object] } } }
console.log(list.display()); // 0 2 3
console.log(list.findpre('1')); 
// node { element: '0', next: node { element: '1', next: node { element: '2', next: [object] } } }

上面就是用javascript对简单链表的数据结构的简单实现:smile:

总结

以上所述是小编给大家介绍的使用javascript实现链表的数据结构的代码,希望对大家有所帮助