ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript チュートリアル -- リンクされたリスト データ構造の実装

JavaScript チュートリアル -- リンクされたリスト データ構造の実装

巴扎黑
巴扎黑オリジナル
2017-08-06 15:34:081413ブラウズ

リンク リストは、線形リストですが、データを線形順序で格納するのではなく、各ノードの次のノードへのポインタを格納します。以下では、JavaScript コードを使用してリンク リストのデータ構造を実装します

リンク リストは一般的な基本データ構造である線形リストですが、データを線形順序で格納するのではなく、それぞれに格納されるポインター (Pointer)ノード内から次のノードへ - Wikipedia

上記は、Wikipedia によるリンク リストの解釈です。以下では、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 チュートリアル -- リンクされたリスト データ構造の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。