ホームページ >よくある問題 >リンクされたリストと配列の違いは何ですか?

リンクされたリストと配列の違いは何ですか?

hzc
hzcオリジナル
2020-06-24 13:31:492846ブラウズ

リンクされたリストと配列の違いは何ですか?

配列は線形構造であり、直接インデックスを付けることができます。つまり、i 番目の要素を取得するには、a[i] だけを使用します。リンク リストも線形構造なので、i 番目の要素を取得するには、ポインタを使用して要素を i 回逆方向に走査するだけで済みます。リンクされたリストは配列よりも面倒で効率が低いようです。

これらの類似点間の微妙な違いについて考えると、それらの本当の違いが徐々に明らかになります。リンクされたリストの効率が配列よりも低いのはなぜでしょうか?両方の初期化から始めましょう。配列の要素はメモリのスタック領域にあり、システムが自動的にスペースを適用するため、配列を初期化する必要はありません。リンクされたリストのノード要素はメモリのヒープ領域にあり、各要素は malloc などのスペースを手動で適用する必要があります。つまり、配列は静的にメモリを割り当てますが、リンクされたリストは動的にメモリを割り当てます。とても面倒なリンク リストをなぜ使用するのでしょうか?配列はリンク リストを完全に置き換えることはできないのでしょうか?この質問に戻りますが、学生情報管理システムがどのようにして完成したかを考えてみましょう。そんなときになぜリンクリストを使うのでしょうか?学生管理システムでの挿入や削除などの操作は非常に柔軟ですが、配列のサイズは固定されており、柔軟かつ効率的に挿入や削除を行うことができないためです。ヒープ操作がより柔軟になるためです。配列に要素を挿入するたびに既存の要素を移動する必要がありますが、リンクリストの要素はヒープ上にあるため、そのような手間がかかりません。

ここまで述べましたが、配列とリンク リストの違いは次のように要約されます:

  • 配列はメモリを静的に割り当て、リンク リストはメモリを動的に割り当てます。

  • 配列はメモリ内で連続していますが、リンク リストは連続していません。

  • 配列要素はスタック領域にあり、リンク リスト要素はヒープ領域にあります。 ;

  • 配列 添字の配置を使用すると、時間計算量は O(1)、リンク リスト内の要素を検索する時間計算量は O(n) になります。

    配列内の要素の挿入または削除の時間計算量は O(n) 、リンク リストの時間計算量は O(1) です。

以上がリンクされたリストと配列の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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