JavaScript双方向チェーン操作例分析【作成、追加、検索、削除など】


本論文の実例はJavaScript双方向チェーン動作を述べている。皆さんに参考にしてあげます。具体的には以下の通りです。
一つの双方向リンクテーブル(doubly linked list)は、ノードと呼ばれる一連の順序リンク記録からなるリンクデータ構造である。各ノードは、リンクと呼ばれる2つのフィールドを含み、それらは、ノードのシーケンスの中の前のノードと次のノードへの参照である。
開始ノードと終了ノードの前のリンクと次のリンクは、それぞれ何らかの終了ノードを指し、通常は前哨ノードまたはnullであり、リストを巡回するのに便利である。前哨ノードが一つしかない場合、リストは前哨ノードを介して循環的にリンクされます。同じデータ項からなる二つのシングルチェーンテーブルに概念化できるが、順序は逆である。

class DNode {
 constructor(val) {
  this.val = val;
  this.prev = null;
  this.next = null;
 }
}

ノードを追加

function add(el) {
  var currNode = this.head;
  while (currNode.next != null) {
    currNode = currNode.next;
  }
  var newNode = new DNode(el);
  newNode.next = currNode.next;
  currNode.next = newNode;
}

検索

function find(el) {
  var currNode = this.head;
  while (currNode && currNode.el != el) {
    currNode = currNode.next;
  }
  return currNode;
}

挿入

function (newEl, oldEl) {
  var newNode = new DNode(newEl);
  var currNode = this.find(oldEl);
  if (currNode) {
    newNode.next = currNode.next;
    newNode.prev = currNode;
    currNode.next = newNode;
  } else {
    throw new Error('                !')
  }
}

ディスプレイ

//   
function () {
  var currNode = this.head.next;
  while (currNode) {
    console.log(currNode.el);
    currNode = currNode.next;
  }
}

//   
function () {
  var currNode = this.head;
  currNode = this.findLast();
  while (currNode.prev != null) {
    console(currNode.el);
    currNode = currNode.prev;
  }
}

削除

function (el) {
  var currNode = this.find(el);
  if (currNode && currNode.next != null) {
    currNode.prev.next = currNode.next;
    currNode.next.prev = currNode.prev;
    currNode.next = null;
    currNode.previous = null;
  } else {
    throw new Error('           ');
  }
}

興味のある友達はオンラインHTML/CSS/JavaScriptコードを使ってツールを実行できます。http://tools.jb51.net/code/HtmlJsRun上記コードの運行効果をテストします。
もっと多くのJavaScriptに関する内容に興味がある読者は、当駅のテーマを見ることができます。「JavaScript数学演算の使い方のまとめ」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」、「JavaScript配列操作技術のまとめ」、「JavaScriptソートアルゴリズムのまとめ」、「JavaScriptはアルゴリズムと技術の総括を遍歴します。」、「JavaScript検索アルゴリズムのテクニックのまとめ」および「JavaScriptエラーとデバッグテクニックのまとめ
本論文で述べたように、JavaScriptプログラムの設計に役に立ちます。