Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptの単一リンクリストから要素を削除します


このような単一リンクリストがあるとします-

const list = {
   value: 1,
   next: {
      value: 2,
      next: {
         value: 3,
         next: {
            value: 4,
            next: {
               value: 5,
               next: {
                  value: 6,
                     next: {
                        value: 7,
                        next: null
                     }
                  }
               }
            }
         }
      }
};

最初の引数として1つのリストを取り、2番目の引数として数値を受け取るJavaScript関数を作成する必要があります。

関数は、リストにその値を持つノードが存在するかどうかを検索する必要があります。存在する場合、関数はリストからノードを削除する必要があります。

このためのコードは-

になります
const list = {
   value: 1,
   next: {
      value: 2,
      next: {
         value: 3,
         next: {
            value: 4,
            next: {
               value: 5,
               next: {
                  value: 6,
                  next: {
                     value: 7,
                     next: null
                  }
               }
            }
         }
      }
   }
};
const recursiveTransform = (list = {}) => {
   if(list && list['next']){
      list['value'] = list['next']['value'];
      list['next'] = list['next']['next'];
      return recursiveTransform(list['next']);
   }else{
      return true;
   };
}
const removeNode = (list = {}, val, curr = list) => {
   // end reached and item not found
   if(!list){
      return false;
   }
   if(list['value'] !== val){
      return removeNode(list['next'], val, list);
   };
   return recursiveTransform(list);
};
console.log(removeNode(list, 3));
console.log(JSON.stringify(list, undefined, 4));

出力

そして、コンソールの出力は-

になります
true
{
   "value": 1,
   "next": {
      "value": 2,
      "next": {
         "value": 4,
         "next": {
            "value": 6,
            "next": {
               "value": 7,
               "next": null
            }
         }
      }
   }
}

  1. Javascriptの循環としての単一リンクリスト

    単一リンクリストでは、最後のノードの次のポインタが最初のノードを指します。

  2. Javascriptを使用して二重リンクリストから要素を削除する

    リンクリストでは、要素の削除は非常に簡単です。削除したいノードを取り除く必要があります。つまり、その参照を失います。考慮する必要がある3つのケースがあります- headから要素を削除する:この場合、head =head.nextを割り当てるだけで、次の要素から前のリンクを削除できます。このようにして、最初の要素の参照を失います。そして、頭が2番目の要素を指し始めます。 テールから要素を削除する:この場合、最後から2番目のノードのnode.nextをnullに割り当てるだけで、リストから最後の要素を削除できます。また、現在のノードを指すようにテールを更新します。 中間から要素を削除する:これ