7

ポインターがある場合、C++ でリンク リストを実装するのは簡単です。しかし、他の言語 (Java、Python など) ではどのように実装されているのでしょうか。リンク リストにビルトイン クラス (JAVA でサポートされている) を使用したくないのですが、ポインターを置き換えてリンク リストを作成する方法はありますか?

4

7 に答える 7

29

それらは、本質的に (構文を除く) ポインターである参照を使用して実装され、ポインター演算を行うことはできません (一部の言語では null にすることもできません)。多くの言語では、デフォルトが値渡しである C++ とは異なり、参照は変数を使用するデフォルトの方法です。

于 2012-08-24T18:55:53.980 に答える
5

他の言語では、ポインターに密接に関連する参照を扱います。

于 2012-08-24T18:54:53.673 に答える
2

前述のように、メモリのブロックを指すポインタの代わりに参照が使用されます。あなたがC ++で持っているように

Struct Node {
  Node *last;
  Node *next;
}

次のようになります。

Struct Node {
  Node last;
  Node next;
  }
于 2012-08-24T18:59:45.897 に答える
1

優れたデータ構造クラスは、FORTRAN などの配列を使用して、リンクされたリストを任意の言語で実装できることを示します。

ポインターを使用する代わりに、他の手段を使用して次のリンクを見つけます。配列では、ポインターの代わりに次の要素へのインデックスを使用します。

したがって、ポインターの代わりにファイル位置を使用して、ランダム アクセス ファイルにリンク リストを実装できます。

于 2012-08-24T19:09:04.723 に答える
0

あなたはこの本で良い答えを見つけるかもしれません-http ://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844-私があなたのために思い出したことを要約します。

基本的に、同じサイズの2つの配列があります(できればnより大きく、n =格納する要素の数)。それらをアレイAおよびアレイBと呼びます。

配列A[i]はデータ値を保持します。配列B[i]は、A [i]-> next =A[k]となるような'next'値'k'を保持します。

うまくいけば、これがお役に立てば幸いです。

于 2012-08-24T19:13:03.997 に答える
0

独自のクラスを作成し、class nodeそれぞれが次のノードへnodeのフィールドを保持する node場合、実際にはその次のノードへの参照を保持します (最後のノードの場合は null )。

于 2012-08-24T18:56:37.290 に答える