情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Node.jsで連結リストを使用する

連結リストを使用するにはBucketsパッケージのbuckets-jsモジュールのLinkedListクラスを使用します。

このクラスは連結リストの実装であり、下のような関数を提供します。

  • add・・・要素を追加します。第1引数に追加する要素を指定します。第2引数に要素を追加するインデックスを指定します。第2引数は指定しなくても構いません。第2引数を指定しなかった場合には末尾に要素を追加します。
  • clear・・・全ての要素を削除します。
  • contains・・・要素が含まれているか調べます。第1引数に要素を指定します。第2引数に要素が同一であるか判定するための関数を指定します。第2引数は指定しなくても構いません。
  • elementAtIndex・・・インデックスにより要素を取得します。第1引数にインデックスを指定します。
  • equals・・・別の連結リストと内容が同一であるか調べます。第1引数に連結リストを指定します。第2引数に要素が同一であるか判定するための関数を指定します。第2引数は指定しなくても構いません。
  • first・・・最初の要素を取得します。
  • forEach・・・それぞれの要素に対して処理を行います。第1引数に実行する処理を関数として指定します。
  • indexOf・・・要素が出現する最初のインデックスを取得します。第1引数に要素を指定します。第2引数に要素が同一であるか判定するための関数を指定します。第2引数は指定しなくても構いません。
  • isEmpty・・・空の連結リストであるか調べます。
  • last・・・最後の要素を取得します。
  • remove・・・要素を削除します。第1引数に削除する要素を指定します。第2引数に要素が同一であるか判定するための関数を指定します。第2引数は指定しなくても構いません。
  • removeElementAtIndex・・・インデックスにより要素を削除します。第1引数にインデックスを指定します。
  • reverse・・・要素の順序を逆転させます。
  • size・・・要素の数を取得します。
  • toArray・・・全ての要素から成る配列を取得します。

サンプルコード1

LinkedListクラスの関数の使用例です。

buckets-js-linked-list.js

var bucketsJs = require('buckets-js');

var l = new bucketsJs.LinkedList();

print(l);

l.add(0);
l.add(1);
l.add(2);
l.add(3, 0);

print(l);

console.log(l.isEmpty());

console.log(l.size());

console.log(l.first());
console.log(l.last());

console.log(l.elementAtIndex(0));
console.log(l.elementAtIndex(10));

console.log(l.contains(0));
console.log(l.contains(10));

console.log(l.contains(0, function(e1, e2) {
    return e1 % 5 === e2 % 5;
}));
console.log(l.contains(5, function(e1, e2) {
    return e1 % 5 === e2 % 5;
}));

console.log(l.indexOf(0));
console.log(l.indexOf(11));

console.log(l.indexOf(0, function(e1, e2) {
    return e1 % 2 == e2 % 2;
}));
console.log(l.indexOf(11, function(e1, e2) {
    return e1 % 2 == e2 % 2;
}));

l.reverse();

print(l);

l.remove(2);

print(l);

l.removeElementAtIndex(0);

print(l);

l.clear();

print(l);

console.log(l.isEmpty());

console.log(l.size());

console.log(l.first());
console.log(l.last());

function print(l) {
    l.forEach(function (e) {
        console.log(e);
    });
}

使用パッケージ

  • Buckets
    npm install buckets-jsでインストールします。

実行結果

C:\work\node>node buckets-js-linked-list.js
3
0
1
2
false
4
3
2
3
undefined
true
false
true
true
1
-1
1
0
2
1
0
3
1
0
3
0
3
true
0
undefined
undefined

関連

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-Node.js